【发布时间】:2010-11-23 23:14:03
【问题描述】:
我正在研究保护我正在开发的 javascript 应用程序的方法。该应用程序是一个使用 APE(Ajax Push Engine)作为后端的聊天客户端。
目前,任何人都可以访问该页面并向 APE 服务器发出 GET/POST 请求。我只想为注册用户提供聊天客户端,并且我想确保只接受他们的请求。我可以使用 PHP 的用户名/密码身份验证来为用户提供页面。但是一旦他们有了页面,有什么可以阻止他们修改 javascript 或让它落入坏人之手?
这种保护客户端/服务器应用程序的方法看起来很有前途:http://abhinavsingh.com/blog/2009/12/how-to-add-content-verification-using-hmac-in-php/
我有另一个消息来源说这是 javascript 客户端的理想选择,因为它不依赖于发送私钥。但这怎么可能呢?根据上面的教程,客户端需要提供私钥。这似乎不太安全,因为任何拥有 javascript 的人现在都拥有该用户的私钥。据我了解,它会像这样工作:
- 用户使用用户名和密码登录
- PHP 验证用户名和密码,查找用户的私钥并将其插入到 javascript 中
- Javascript 提供一个签名(使用私钥),以及所有 APE 请求的公钥
- APE 将计算出的签名与接收到的签名进行比较,并决定是否处理请求。
如果 javascript 应用程序需要知道私钥,这如何保证安全?
感谢您的帮助!
【问题讨论】:
-
嗨 Walderman,从这里看到了帖子的引用者,所以让我借此机会解释一下博客文章中解释的工作。解释的方法更多的是一种流验证方法,即如果您想确保调用的 ajax/javascript/api 确实是通过您的应用程序控制流设计的。如果服务器端缺少 crumb 信息或无效(由于超时或损坏),您只需忽略呼叫....希望它清除工作。解释的方法不要求您在客户端发送任何私钥..
标签: php javascript hmac ajax-push