跨站脚本攻击XSS-攻击原理及防御
HTML标签中插入脚本
所有在标签中输出的变量,如果未做任何处理,都能导致直接产生XSS。针对这种脚本插入具体的防御为HtmlEncode编码。如下例。
攻击:
VALUE
如果VALUE值为:
则页面展示为:
防御:
对输出的变量“”进行HtmlEncode编码。则输出为:
3.2HTML属性中插入脚本
与在HTML标签中插入脚本类似。如下例。
攻击
如果VALUE值为:
" onmouseover="alert(2)
则页面展示为:
防御
对输出的变量“" onmouseover="alert(2)”进行HtmlEncode编码。则输出为:
3.3
如果VALUE值为:
";alert(3)//
则页面JS为:
防御
对输出的变量“";alert(3)//”进行JavascriptEncode编码。则输出为:
var a = "\"\x3balert\x283\x29\x2F\x2F";
3.4在事件中插入脚本
在事件中输出和在
防御
先判断输出的变量是否以“http”开头,如果不是,则自动添加,以保证不会出现伪协议类的XSS攻击。之后再进行encodeURI编码。则输出为:
test
XSS (Cross Site Script),跨站脚本攻击,因为缩写和 CSS (Cascading Style Sheets) 重叠,所以只能叫 XSS。