XSS介绍
Cross-Site Scripting(跨站脚本攻击)简称XSS,是一种代码注入攻击。为了和CSS区分,这里将其缩写的第一个字母改成了X,于是叫做XSS。恶意攻击者在web页面里插入恶意JavaScript代码,当浏览者浏览网页时就会触发恶意代码,从而导致用户数据的泄露如Cookie、SessionID等,及造成其他类型的攻击。
XSS的本质是:恶意代码未经过滤,与网站正常代码混在一起,浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。从源头上讲,就是代码和数据被攻击混淆,导致浏览器将攻击者输入的数据解释为代码。
案例介绍
对于下面的代码
<input type="text" value="<%= getParameter("keyword") %>">
<button>搜索</button>
<div>
您搜索的关键词是:<%= getParameter("keyword") %>
</div>
当构造链接:
http://xxx/search?keyword="><script>alert('XSS');</script>
浏览器请求该链接时,服务端会解析出参数keyword,得到"><script>alert('XSS');</script>
,拼接后,得到:
<input type="text" value=""><script>alert('XSS');</script>">
<button>搜索</button>
<div>
您搜索的关键词是:"><script>alert('XSS');</script>
</div>
因为参数中的数据和页面代码产生了混淆,浏览将用户参数中的<script>alert('XSS');</script>
,解析为代码执行。
修复这个问题可以对用户输入参数进行转义。
使用函数escapeHTML()