PHP聊天-在html5中存储id

PHP Chat - Storing id in html5?

本文关键字:存储 id html5 聊天 PHP      更新时间:2024-03-11

我正在尝试使用PHP创建一个简单的聊天。一切都在按预期进行,但却遇到了潜在的"漏洞"。我使用AJAX来检索滚动上的所有聊天数据(很像Facebook、Twitter等)。现在问题来了:我目前正在将聊天id存储在动态创建的div中。例如"

<div class="chat" chat_id="4">
    ....
</div>

可以通过浏览器更改chat_id,这将导致任何输入的文本都存储在数据库中的错误id下。防止这种情况发生的最佳方法是什么?

我目前想到了一种方法,将所有检索/启动的聊天详细信息(发件人、聊天id)存储在$_SESSION变量中。这基本上是为了验证目的,以确保聊天id对当前用户有效。

有更好的方法吗?非常感谢。

您可以在这里使用加密,这里有一个128位Rijndael加密的例子

<?php
/*
creating cipher object using Rijndael encyrption algorithm with Cipher-block chaining (CBC) as mode of AES encryption
Here I have chosen 128 bit Rijndael encyrption
*/
$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
$key = 'abcdefghijklmnopqrstuvwxyzABCDEF';  // choose a strong iv (32 bytes)
$iv = 'abcdefghijklmnop'; // choose a strong iv (16 bytes)
$plainText = 'This is plain text.'; //here you can use your "id" that you want to encrypt
function encrypt($data, $key, $iv) {
    return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv));
}
function decrypt($data,$key,$iv) {
    return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($data), MCRYPT_MODE_CBC, $iv);
}
echo $ciphertext = encrypt($plainText, $key, $iv);
echo "<br>";
echo $plaintext = decrypt($ciphertext, $key, $iv);