Web应用的安全性一直有一个先天缺陷,即http基本就是明码传递,这个缺陷可以让后台做的诸多加密工作一朝崩塌,下面以一个实际例子来说明。
我们还是用TCPMon来截获http请求,看从中能否找到有用的信息,下面的Http请求来自很多网站都有的注册和登录页面。TCPMon的具体方法请参照:
如何用Apache TCPMon来截获SOAP消息。
下面是用户注册页面,我们向其中输入了一点信息:
点击“提交按钮后”,我们在TCPMon中可以截获这样的内容.
下面是登录页面:
点击“登录”按钮后,TCPMon截获的内容如下:
上面两个字符串:
name=%E5%88%98%E5%A4%87&email=1@3445.5&pswd=123456&repswd=123456&brief=rteterte&submitBtn=%E6%8F%90%E4%BA%A4
name=%E5%88%98%E5%A4%87&pswd=123456&submitBtn=%E7%99%BB%E5%BD%95
已经暴露了不少信息,我们再转码一下会全部暴露出来:
System.out.println(URLDecoder.decode("name=%E5%88%98%E5%A4%87&email=1@3445.5&pswd=123456&repswd=123456&brief=rteterte&submitBtn=%E6%8F%90%E4%BA%A4","utf-8"));
System.out.println(URLDecoder.decode("name=%E5%88%98%E5%A4%87&pswd=123456&submitBtn=%E7%99%BB%E5%BD%95","utf-8"));
输出如下:
name=刘备&email=1@3445.5&pswd=123456&repswd=123456&brief=rteterte&submitBtn=提交
name=刘备&pswd=123456&submitBtn=登录
也就是说,我们在表单中输入的内容,已经完全出现在http请求中。只要加一个网络嗅探器(sniffer)来收集网络上传递的数据报的相关信息,再加以少许处理,所有私密信息都将被发现。