我有一个使用php制作的网站,其中一部分是用节点js编写的。节点js服务器和php共享mysql数据库。 我的网站的一部分是使用nodejs,这要求我将用户ID从客户端传递到节点js服务器。
例如我正在做这样的事情
var user_id=parseInt(<?php echo $this->id; ?>);
php部分在zend中。所以对于那些不熟悉zend的人来说,这个id是在控制器中为这个特定视图设置的。
因此,当我查看此特定页面的源时,用户ID清晰可见,如果更改,用户可以更改另一个用户的数据库中的某些表,如果他传递了一些其他用户ID而不是他的。
隐藏此变量或其他方法的最佳方法是什么,这有助于我克服这个问题?
答案 0 :(得分:2)
你这里有一些倒退的东西。
PHP也是一种后端语言,Node是你的后端语言。
现在要在他们内部进行交流为什么要通过HTML将参数传递给javascript,然后期望它是安全的
处理它的最佳方法是你应该在节点上创建一些API,这样PHP就可以通过与这个API交谈而不是等待javascript来直接将值发送给它。
OR
你应该创建一个令牌认证系统并使用它,这样每次为这个客户端生成php页面时,它会创建一个带有一些随机字符的令牌,然后将这个令牌传递给JS .. JS然后用这个令牌请求Node。节点会看到令牌表并识别客户端ID并执行必要的工作。
在节点端应该使用某种令牌/身份验证,否则你的服务器不安全。