跨站脚本攻击(XSS)

名词解释

跨站脚本攻击,英文表述为 Cross-site Scripting。由于可能与级联样式表CSS混淆,采用XSS缩写。它属于计算机安全领域的一个概念。XSS攻击涉及到三方,分别是用户,第三方网站,黑客。攻击者自然是黑客,受害者是用户,第三方网站是不作为者,给网站留下了漏洞,导致黑客能够通过它的漏铜达到攻击的目的。

万变不离其宗

XSS的本质在攻击二字,使用方式是通过可执行的脚本(恶意代码)。所以原理很简单,就是因为浏览器支持script脚本执行,而黑客们正是利用了这个功能,想方设法在用户访问的网站中植入恶意脚本,从而窃取用户信息。

形式多种多样

一、存储型脚本注入

通过提交恶意代码到后台,后台把数据存储到了数据库,以后每次获取数据到页面的时候,均能在客户端执行恶意脚本。例如通过留言版或者评论列表提交恶意代码,在个人信息简介中提交恶意代码等。

二、反射性脚本注入

通过诱导用户点击某个链接,在该链接注入恶意代码作为提交参数,服务器可能会针对提交的参数做输出返回,或者利用返回错误页面时路径问题输出(路径用恶意代码表示)等注入恶意代码。

三、基于dom的脚本注入

html的dom元素有一些事件或属性,也可以注入脚本。例如<a>的href, <img>的src, 动态创建html元素的时候,设置innerHTML等。

亲自试一试

经测试,最简单的一些代码注入已经很难生效,服务器大多会把恶意标签给翻译成正常的显示,例如<script>标签再次被读取的时候显示为 lt;script rt;
通过反射注入脚本方式,在搜索框输入脚本或者输入错误的url路径,结果都能正常显示script脚本,前端应该通过createTextNode直接把脚本内容生成文本标签,浏览器也就不会去解释执行恶意代码了。

posted @ 2016-08-23 15:49  braveliu.site  阅读(253)  评论(0编辑  收藏  举报