XSS攻击全程是跨站脚本攻击。他是WEB应用程序最常见的攻击手段之一。跨站脚本攻击指的是攻击者在网页中嵌入恶意脚本程序,当用户打开网页时,脚本程序便会开始爱客户端的浏览器上执行,已盗取客户端的cookie,用户名密码等。下载执行木马程序,甚至能获取客户端admin权限。
xss攻击原理
场景一假设如下表单
<input id='company' name='company' value="lenovo "/>
表单company的内容来自用户的输入,当用户输入的公司不是正常的字符串,而是
--%><script type="text/javascript">alert("警告")</script><%--
由于某种原因,如company服务端校验不通过,服务端重定向回这个页面,并且带上之前用户输入的company参数,此时页面则变成了
<input id='company' name='company' value="lenovo "/> <script type="text/javascript">alert("警告")</script>
当然这段脚本只是弹出一下窗口,并不会造成什么危害。攻击的威力取决于用户输入什么样的脚本,只要稍微修改,就会使攻击极具危害性。
场景二
用户在表单输入一段数据后,提交给服务端进行持久化,其他页面需要从服务端将数据取出来展示。还是上面那段脚本。用户输入名称后会将脚本保存在数据库中。下一个用户查询时就是自动执行alert脚本,造成危害
同样,攻击的威力取决于用户输入什么样的脚。
xss防范
xss之所以会发生,是因为用户输入的数据变成了代码。因此,我们需要对用户输入的数据进行HTML转义处理,将其中的尖括号,单引号等特殊字义进行转义编码
如今很多开源的开源框架本身默认就提供HTML代码转义的功能,如今流行的jstl,Struts等。