XSS攻击是什么?
XSS攻击:跨站脚本攻击(Cross Site Scripting)
为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS
XSS攻击的过程:
例子:
表单内容:
<input type="text" name="nick">
当用户输入:
"/><script>alert("haha");</script><!--
当服务端检测用户输入不合法,需要返回提交页面让用户重新输入的时候:
<input type="text" name="nick" value=""/><script>alert("haha");</script><!--">
或者当需要将用户的信息来展示的时候
<p>"/><script>alert("haha");</script><!--</p>
如此造成的结果将是:
这个结果看似不是特别严重,但是我们可以将输入再更改一下:
当输入:
<p>"/><script>while(1){alert("haha");}</script><!--</p>
这样的结果将导致弹窗永远无法停止,从而导致页面无法正常加载,用户无法正常操作
如果用户输入其他更具破坏力的脚本,那麼你只要一访问这个网站页面,将会立马中招,简直就是躺着就中枪。
XSS攻击防御
对于这样的攻击,我们应该怎样防御呢?
我们可以知道,之所以会受到这样的攻击,原因是浏览器错将该以文本方式显示的内容,当成代码来执行了,那么有什么可以避免这种错误呢?
最简单的方法就是,将用户输入的内容转义,使其变成浏览器不可执行的文本,转换方式如下:
< -----> <
> -----> >
' -----> &
" -----> "
经过转换后,上面输入的内容在保存的时候将为:
前端用户输入:
"/><script>alert("haha");</script><!--
经后台转换后:
"/><script>alert("haha");</script><!--
当前台显示的时候,就如下:
"/><script>alert(“haha”);</script><!–
至此,相信你已经基本了解XSS攻击了,当然,关于XSS攻击更加高级的知识还期待你去深入探索,由于水平有限,这里就不多讲了,有关更多XSS知识,点击:http://netsecurity.51cto.com/art/201408/448305_all.htm