通过cookie安全地在php和node.js之间共享数据
我有一个PHP网站,并进行实时更新和聊天我已经安装Node.js和它的运行良好。
PHP和Node.js都可以访问相同的MySQL数据库。
但问题是validation已login到PHP站点的用户的身份。
我不想通过任何方式与PHP应用程序交谈,不论是否使用REST。 因为,对我来说,这将违背使用Node.js的相同目的,因为每个Node.js请求都将创build一个新的PHP页面请求。
我想要的是PHP和node.js都能理解的encryption和解密方法
所以我可以设置一个cookie的encryption值为Node.js请求,这将在updates.mydomain.com子域。 通过读取cookie,Node.js可以解密它的值并validation用户的身份。
那么,我的问题是:是否有使用相同的encryption密钥通过PHP和Node.js支持的任何encryption和相应的解密方法?
更新
实际上,我并不期望在客户端解密它:因为那么解密的全部点是毫无意义的。 我想要做的是 –
1)PHP生成一个cookieencryption的用户信息,并使用cookie作为像updates.mydomain.com这样的特定域
2)然后node.js将获取每个后续请求的cookie,并使用相同的encryption密钥解密服务器端的数据。
正如你所看到的,这就是为什么我想知道,如果PHP和node.js之间有一个通用的encryption/解密系统,那么一个encryption的数据可以被另一个解密,反之亦然。
这样我可以安全地将当前login的用户身份从PHP转移到node.js,我不必担心其他types的会话pipe理:)
所以简而言之,PHPencryption – > Node.js解密 – >取回相同的数据。 可能?
谢谢,
安键
这里最好的方法(imho)是将会话信息存储在数据库中 ,然后确保Node可以读取由PHP应用程序设置的会话cookie。
然后它可以检查会话cookie对数据库,以确保用户login。
encryption示例
如果你真的想要使用encryption,请注意,这可能会不太安全,并且需要花费更多的时间来完成,而不是简单地改变PHP会话后端,但这里有一个例子可能会起作用:
在PHP中,encryption数据:
<?php $encryption_key = 'somethingverysecretandpreferrablylong'; $vector = 'anotherlongwindedstring'; mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $encryption_key, 'My secret message', MCRYPT_MODE_CBC, $vector); ?>
并在Node.js中解密;
var crypto = require('crypto'); var decipher = crypto.createDecipher('aes-256-cbc','InmbuvP6Z8'); decipher.update(crypted_string_from_cookie,'hex','utf8'); decipher.final('utf8');
请注意这个代码。 我绝不是一个安全专家,所以如果你想encryption任何敏感的东西,你应该得到同行评审:)
另一种方法是使用node.js作为PHP会话存储本身。 贡萨洛·阿尤索(Gonzalo Ayuso)有一篇有趣的文章:
http://gonzalo123.wordpress.com/2011/07/25/using-node-js-to-store-php-sessions/
- 我可以在同一个函数中使用:“response.render”和“response.writeHead”选项吗?
- CookieParser与req.cookies expressjs
- Javascript:如何模拟浏览器 – Cookie的实施?
- nodejs xmlHttpRequest类似
- 如何访问由node.js Express创build的客户端Cookie(带有会话ID)?
- 如何使用Passport.js访问Cookie
- 使用socket.ioparsingcookie
- 如何使用节点聊天服务器的单个瞬间作为使用该应用程序的不同组织的mutitenant?
- 如何使用socket.io设置和读取cookie?