这是经典的”防止中间人窃听问题“: 如何防止WIFI网关, 路由器, 网卡设备等中间网桥设备窃听私密数据。
解决方案也很经典:加密。
以下用对称加密说明:
在访问页面的时候,给他一个cookie,以及存好对应的秘钥$secretKey
<form>
<input type="hidden" id="secret_key" value={{$secretKey}}>
账号<input name="username" type="text">
密码<input name="password" type="password">
</form>
渲染这个页面的时候,使用模板变量把$secretKey
给赋值上。
提交的密码就用AES加密, 秘钥为$secretKey
, 然后服务端进行解析后,再对比密码。
但是网络安全,没有绝对安全,有的中间人会想办法嗅探$secretKey
,我们要做的就是把$secretKey
的流程做的不容易被抓取,但是不变的核心思想就是加密传输,服务端界面,包括ssl也是这个原理。
从防止中间人攻击来说,只需要 HTTPS 就够了。
如果你要防止用户自己抓包从 Network 看到,可以与后端来进行商议,使用非对称加密或者非对称加密 + 对称加密的方式对用户提交的数据进行加密,这样别人抓包看到的就是加密后的数据了,但是这样是没有意义的,因为不论哪种方式,你的密钥都会在网络传输或者写在客户端,尤其是网页端,很容易就能被截获。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
使用https