Nginx启用了https,但是测试部门在使用fiddler工具抓包时,发现能抓到用户账号和密码。但是我自己在服务端用tcpdump抓包却抓不到明文账号和密码。
现象
测试反馈的问题:
解释
测试人员是在本地打开fiddler工具抓包,同时打开本地浏览器,输入应用地址,然后输入用户账号和密码,然后点击登录。在这个操作过程中,其实fiddler把测试人员输入账号和密码也给录制下来了,是客户端上传的明文账号和密码,因此也看到了明文账号和密码。这个看到的账号密码并不是https传输过程中看到的账号名和密码。
密文是针对https两端以外其他路径而言,作为https链接的两端,自然可以看到明文。这就好比,你自己打开一个网站,然后输入用户名和密码,你的朋友在你旁边看着你输入账号和密码,他是肯定能看见明文账号和密码的。
Https保证的是传输过程中第三方抓包看到的是密文。客户端和服务端,无论如何都可以拿到明文。在自己本地抓包不能说明什么。
示例
以码云 网站为例,不需要抓包工具,打开F12就可以看到明文账号和密码。
更合理办法
更安全的方式是,在写代码时,先将用户输入的账号和密码加密,然后再发到后台校验。