首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过cookie安全地在php和node.js之间共享数据

通过cookie安全地在php和node.js之间共享数据
EN

Stack Overflow用户
提问于 2011-05-04 05:48:19
回答 2查看 5.4K关注 0票数 11

我有一个PHP站点,为了实时更新和聊天,我已经安装了Node.js并运行良好。

PHP和Node.js都可以访问同一个MySQL数据库。

但问题是要验证已经登录到PHP站点的用户的身份。

我不想通过任何方式和PHP应用程序交谈,不管休息与否。对我来说,这将违背使用Node.js的相同目的,就像每个Node.js请求一样,将提出一个新的Node.js页面请求。

我想要的是,一种由PHP和node.js共同理解的加密和解密方法。

这样,我就可以为Node.js请求设置一个带有加密值的cookie,该值将位于updates.mydomain.com子域。通过读取cookie,Node.js可以解密其值并验证用户的身份。

那么,我的问题是:是否有任何加密和相应的解密方法是通过PHP和Node.js支持的,使用相同的加密密钥?

更新

实际上,我并不期待在客户端对其进行解密:D,因为解密的全部内容都是毫无意义的。我想做的是-

1) PHP生成cookie加密的用户信息,并将该cookie用于特定域(如updates.mydomain.com )

2)然后node.js将为每个后续请求获取cookie,并使用相同的加密密钥对服务器端的数据进行解密。

正如你所看到的,这就是为什么我想知道,在PHP和node.js之间是否有一个共同的加密/解密系统,这样由一个加密的数据可以被另一个解密,反之亦然。

通过这种方式,我可以安全地将当前登录的用户身份从PHP传输到node.js,而不必担心其他类型的会话管理:)

因此,简而言之,用PHP加密,->解密,由Node.js ->解密,得到相同的数据。有可能吗?

谢谢,

安詹

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-04 08:59:08

这里最好的方法(imho)是store the session information in the database,然后确保Node能够读取PHP设置的会话cookie。

然后,它可以检查会话cookie与数据库,以确保用户已登录。

加密示例

如果您真的想使用加密,请注意这可能会比简单地更改PHP会话后端更不安全,而且需要更多的时间,但是下面的示例可能会奏效:

在PHP中,加密数据:

代码语言:javascript
运行
复制
<?php
$encryption_key = 'somethingverysecretandpreferrablylong';
$vector = 'anotherlongwindedstring';
mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $encryption_key, 'My secret message', MCRYPT_MODE_CBC, $vector);
?>

并在Node.js中解密;

代码语言:javascript
运行
复制
var crypto = require('crypto');
var decipher = crypto.createDecipher('aes-256-cbc','InmbuvP6Z8');
decipher.update(crypted_string_from_cookie,'hex','utf8');
decipher.final('utf8');

拜托,请小心这个密码。我绝不是一个安全专家,所以如果你想加密任何敏感的东西,你应该得到来自以下人员的同行评审:)

票数 13
EN

Stack Overflow用户

发布于 2011-11-07 23:19:17

另一种方法是使用node.js作为PHP会话存储本身。Gonzalo Ayuso有一篇有趣的文章:

http://gonzalo123.wordpress.com/2011/07/25/using-node-js-to-store-php-sessions/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5879132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档