Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Socket.io+;nodejs与PHP一起的聊天系统:在通过节点发送之前验证数据_Php_Node.js_Socket.io - Fatal编程技术网

Socket.io+;nodejs与PHP一起的聊天系统:在通过节点发送之前验证数据

Socket.io+;nodejs与PHP一起的聊天系统:在通过节点发送之前验证数据,php,node.js,socket.io,Php,Node.js,Socket.io,我有一个已经启动并运行的PHP应用程序,我们必须在其中实现一个聊天消息系统。我们选择使用nodejs和socket.io来实现这一点,因为它似乎是最有效的,也是记录最好的。我让PHP处理所有的DB内容,node只做它最有效的事情:非阻塞io在实时(通过房间)接收消息时更新客户端。我还使用jsonwebtokens进行了基于令牌的身份验证 现在一切都运转良好: 当有人发信息时 1. JS send an ajax request to PHP 2. PHP saves the message

我有一个已经启动并运行的PHP应用程序,我们必须在其中实现一个聊天消息系统。我们选择使用nodejs和socket.io来实现这一点,因为它似乎是最有效的,也是记录最好的。我让PHP处理所有的DB内容,node只做它最有效的事情:非阻塞io在实时(通过房间)接收消息时更新客户端。我还使用jsonwebtokens进行了基于令牌的身份验证

现在一切都运转良好:

当有人发信息时

 1. JS send an ajax request to PHP
 2. PHP saves the message to the database
 3. PHP returns a response
 4. JS receives the ajax response and then emits an event to signal to the node to update the appropriate clients
 5. Node emits an event to the appropriate clients to update their views: notif icons, creates a silly sound and what not.

我担心的是第4步和第5步。由于在这些步骤中将传递给节点的数据位于客户端,因此任何恶意用户都可以有效地修改这些数据,并可能触发另一用户视图的更新,即使他不是预期的接收者。我能想到的一个显而易见的解决方案是允许node访问数据库,并验证只有合法的接收者才会收到事件触发器,但这违背了分离PHP应用程序和node关注点的目的。处理这种情况的标准方法是什么

经过一番阅读,我决定使用Redis,因为它具有PubSub功能。对于有相同问题的任何人,请参阅此: