缺陷标题 testphp网站登录时密码未加密传输。
测试平台与浏览器 Windows 10+IE 11或Chrome 45.0。
测试步骤
(1)打开testphp网站http://testphp.vulnweb.com/。
(2)单击Signup链接。
(3)在Username和Password文本框中分别输入test。
(4)按F12功能键,打开浏览器开发者工具,选择Network网络项,如图1-27所示。
图1-27 打开开发者工具
(5)单击login按钮。
(6)查看开发者工具中的密码加密情况。
期望结果 应该使用HTTPS安全传输用户名与密码。
实际结果 使用HTTP连接传输,密码未加密,如图1-28所示。
超文本传输协议(HTTP)被用于在Web浏览器和网站服务器之间传递信息。HTTP以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP不适合传输敏感信息,如信用卡号、密码等支付信息。
为了解决HTTP的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议(HTTPS)。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议。SSL协议依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种是确认网站的真实性。
图1-28 用的是HTTP明码传输
HTTPS和HTTP的区别主要如下。
(1)HTTPS需要到CA申请证书。
(2)HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
(3)HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
(4)HTTP的连接很简单,是无状态的;HTTPS是由SSL+HTTP构建的可进行加密传输、身份认证的网络协议,比HTTP安全。