php hmac验证,php – 使用hmac保护javascript客户端

我正在研究如何保护我正在处理的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值