Javascript PHP聊天-在html5中存储id?

Javascript PHP聊天-在html5中存储id?,javascript,php,jquery,html,chat,Javascript,Php,Jquery,Html,Chat,我正在尝试使用PHP创建一个简单的聊天。一切都按预期运行,但遇到了潜在的漏洞。我正在使用AJAX检索scroll上的所有聊天数据,就像Facebook、Twitter等。现在问题来了:我正在动态创建的div本身中存储聊天id。比如说 <div class="chat" chat_id="4"> .... </div> 用户可以通过浏览器更改聊天室id,这将导致任何输入的文本存储在数据库中不正确的id下。预防这种情况的最佳方法是什么 我目前想到了一种方法,其中所有

我正在尝试使用PHP创建一个简单的聊天。一切都按预期运行,但遇到了潜在的漏洞。我正在使用AJAX检索scroll上的所有聊天数据,就像Facebook、Twitter等。现在问题来了:我正在动态创建的div本身中存储聊天id。比如说

<div class="chat" chat_id="4">
    ....
</div>
用户可以通过浏览器更改聊天室id,这将导致任何输入的文本存储在数据库中不正确的id下。预防这种情况的最佳方法是什么

我目前想到了一种方法,其中所有检索/启动的聊天详细信息发送者、聊天id都存储在$\u会话变量中。这基本上是为了验证目的,以确保聊天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);

为什么你会有一个聊天id属性?他们也可以修改他们的ajax调用。为什么要阻止用户这样做?如果他们想在另一个聊天中写下他们可以访问的内容,为什么不让他们访问呢?为什么不直接在js中设置呢?但仍然不安全-没有客户端调用/数据。根据定义,客户端可以修改发送/执行/接收的所有内容。如果在会话中存储聊天id,则可以在检索消息时检查用户。如果用户在会话中没有该聊天id,则不呈现任何内容。另外,我建议将chat_id=attribute更改为data chat id=attribute。良好实践-和数据-*永远不要相信客户端发送的数据像黑客一样思考,任何人都可以制作一个XHR来做UI不允许的事情。真正的安全性在服务器上,如果他们修改了ID但没有访问权限,那么应该抛出403。如果他们确实有访问权限,那么他们做了他们想做的事情,尽管你的UI不允许他们这样做,但他们是被允许这样做的