Http-only原理与防御XSS实践

预备知识

XSS攻击

      Http-only的设计主要是用来防御XSS攻击,所以学习本实验的读者应首先了解XSS攻击的相关原理内容。

      跨站点脚本攻击是困扰Web服务器安全的常见问题之一。跨站点脚本攻击是一种服务器端的安全漏洞,常见于当把用户的输入作为HTML提交时,服务器端没有进行适当的过滤所致。跨站点脚本攻击可能引起泄漏Web 站点用户的敏感信息。为了降低跨站点脚本攻击的风险,微软公司的Internet Explorer 6 SP1引入了一项新的特性。 

      对于很多只依赖于cookie验证的网站来说,Http-only cookies是一个很好的解决方案,在支持Http-only cookies的浏览器中(IE6以上,FF3.0以上),Javascript是无法读取和修改Http-only cookies,这样可让网站用户验证更加安全。

实验目的

1)了解Http-only的作用及在Cookie中的存在方式

2)掌握通过设置Http-only防御XSS攻击

实验环境

一台Windows XP主机

主机部署实验测试网站

主机安装Fiddler软件

实验步骤

触发XSS漏洞

      在IE浏览器中访问本实验的测试网站: http://10.1.1.189/httponly-test/login.php

      (注意,本实验一定要在IE中浏览网页,这是因为目前版本的IE没有XSS过滤器,方便我们做实验)

      此时我们打开fiddler工具抓包,返回浏览器,在登录框中输入用户ID:admin 和密码:123456进行登录。登录后我们可以看到主界面:

  在Fiddler中查看刚刚用于登录的HTTP包,观察响应头的Cookie字段(红色框内),记录下此时的cookie内容:

这里的昵称输入框由于没有对输入字符进行过滤,存在XSS漏洞。我们在框中输入“<script>alert(document.cookie);</script>”提交验证,结果弹出如下提示,从而验证了XSS漏洞的存在。(对于XSS不理解的读者一定要首先掌握XSS基本知识)

在网站建设过程中,由于编程人员安全意识薄弱或工作疏忽,很容易出现如上所示的XSS漏洞。恶意攻击者可以利用该种漏洞窃取用户Cookie信息,从而冒充用户身份访问网站。应对XSS攻击,可以采用对输入(输出)文本进行特殊字符过滤的方式,但由于网站业务类型复杂多样,且针对过滤也存在绕过方法,所以,仅仅通过过滤手段并不能完全解决XSS问题。Http-only的引入,就是从防止脚本读取Cookie的角度有效防御了XSS漏洞的攻击。

猜你喜欢

转载自www.cnblogs.com/klmyoil/p/10181679.html