版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_19683651/article/details/79606418
xss攻击
字符编码
firefox下某参数为%c1\"alert(/xss/)
var username="";alert(/xss/)
绕过长度限制
location.hash
http://www.test.com#alert()
onclick='eval(location.hash.substr(1))
注释
多个input把中间注释><!-- -->
base标签
<base href="https://www.baidu.com"/>
<base target="_blank" />
<img src='test/img.jpg'/>
window.name
window.name存储payload,eval实现执行
window.name="alert(1)"
eval(name);
flash xss和 js框架poc也是很有参考价值的。
xss防御
httpOnly
禁止js访问带有httpOnly属性的cookie
java ee
response.setHeader("Set-Cookie"),"cookiename=value;Path=/;Domain=domainvalue;Max-Age=seconds;HttpOnly");
c#
HttpCookie mycookie=new HttpCookie("myCookie");
mycookie.HttpOnly=true;
Response.AppendCookie(mycookie);
php5
setcookie("abc","test",NULL,NULL,NULL,NULL,TRUE);
需要注意的是Apache服务器header的TRACE
输入检查
特殊字符输入检查,xss filter
输出检查
编码或转义
编码
可以参考owasp中esapi的Html Encode,JavaScript Encode
python的web2py框架
encodeURI等
富文本
对于<a><img><div>
等安全标签使用白名单,对于<iframe><script><base><form>
等应当严格禁止。
防止dom based xss
需要注意这些函数
document.write()
document.writeln()
XXX.innerHTML=
XXX.outerHTML=
innerHTML.replace()
document.attachEvent()
windows.attachEvent()
document.location.replace()
document.location.assign()
......