Web安全测试学习笔记

根据owasp的xss防御攻略(https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html)提出的几条规则来进行xss防御实验。

 下面是一个存在存储型XSS漏洞的留言板,输入xss代码:

成功执行脚本: 

可以看到xss脚本直接加载在html中:

 

根据owasp提出的建议,对特殊字符进行转义,js代码如下:

$.filterXSS = function (data){
var result =data.replace(/[<>&"]/g,function(c){return {'<':'&lt;','>':'&gt;','&':'&amp;','"':'&quot;'}[c];});
console.log(result);
return result;
}

再试一次刚才的xss,转义成功,alert无法弹出。

其实对xss来说,只要过滤了<>,就能杜绝绝大多数xss,因为xss的payload几乎都离不开<>。

前面的方法是在js过滤,也就是前端过滤,如果是前后端分离的系统,仍然可以抓请求来改,所以后端也需要做过滤。用https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou/controller/XSS.java 举例后端的xss过滤,过滤方式和前端过滤相同:

过滤成功,且不影响显示:

 

原文地址:https://www.cnblogs.com/sallyzhang/p/12713305.html