我正在研究如何保护我正在处理的javascript应用程序.该应用程序是一个聊天客户端,它使用APE(Ajax Push Engine)作为后端.
目前,任何人都可以访问该页面并向APE服务器发出GET / POST请求.我只想为注册用户提供聊天客户端,我想确保只接受他们的请求.我可以使用PHP的用户名/密码验证来为用户提供页面.但是一旦他们有了这个页面,有什么可以阻止他们修改javascript或让它落入坏人之手?
我有另一个消息来源说这是一个javascript客户端的理想选择,因为它不依赖于发送私钥.但这怎么可能呢?根据上面的教程,客户端需要提供私钥.这似乎不太安全,因为拥有javascript的任何人现在都拥有该用户的私钥.根据我的理解,它可以像这样工作:
>用户使用用户名和密码登录
> PHP验证用户名和密码,查找用户的私钥并将其插入到javascript中
> Javascript提供签名(使用私钥),以及包含所有APE请求的公钥
> APE将计算的签名与接收的签名进行比较,并决定是否处理请求.
如果javascript应用程序需要知道私钥,这是如何安全的?
谢谢您的帮助!
解决方法:
HMAC身份验证更适合第三方要连接的API.通过向客户端的浏览器写一个cookie来表明他们已经过身份验证,似乎可以更好地为您的应用程序提供服务.然后,对于每个ajax请求,您可以检查该cookie.
编辑:我收回了一些我所说的有关HMAC更好地服务于第三方API的内容.传统上,HMAC每个用户都有自己的私钥.我不认为这对您的申请是必要的.您可以通过保留一个主私钥并为每个用户提供一个唯一的“公共”密钥(我将其称为公钥,但实际上用户永远不会知道该密钥)来逃脱.当用户登录时,我会写两个cookie.一个是加密的用户公钥时间戳和另一个说明时间戳是什么的键的组合.然后在服务器端,您可以验证加密密钥并检查时间戳是否在给定阈值内(例如10-30分钟,以防他们在您的应用程序中闲置).如果他们已经过验证,请更新加密密钥和时间戳,冲洗并重复.
标签:hmac,javascript,php,ajax-push
来源: https://codeday.me/bug/20191006/1860916.html