java实现 XSS攻击防护
生活随笔
收集整理的這篇文章主要介紹了
java实现 XSS攻击防护
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先說一下什么是XSS攻擊
XSS攻擊全稱跨站腳本攻擊,是為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,
故將跨站腳本攻擊縮寫為XSS,XSS是一種在web應用中的計算機安全漏洞,它允許惡意web
用戶將代碼植入到提供給其它用戶使用的頁面中。
白話解釋
說白了xss攻擊就是jq或html代碼攻擊,用戶提交的數據是jq或html代碼,
前臺拿到數據庫中查出的jq或html代碼,瀏覽器會直接解析執行
實現思路
重寫request.getParamter()方法,在controller獲取參數之前進行jq代碼轉換,也就是將
<Script>所有標簽代碼進行替換,在這里要注意,HttpServletRequest是個接口,
它的實現類是HttpServletRequestWrapper,所以只需要繼承HttpServletRequestWrapper,
重寫request.getParamter方法,在通過過濾器將原本的HttpServeltRequest替換為自定義的HttpServeltRequest
代碼
1.自定義類繼承HttpServletRequestWrapper重寫getParamter
import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper;public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {public XssHttpServletRequestWrapper(HttpServletRequest request) {super(request);}@Overridepublic String getParameter(String name) {String parameter = super.getParameter(name);if(StringUtils.isNotBlank(parameter)){//這里使用的阿帕奇的common-lang3中的轉義html方法,也可以自己實現,String escapeParameter = StringEscapeUtils.escapeHtml(parameter);System.out.println(escapeParameter);return escapeParameter;}return null;} }2.自定義過濾器,使用自定義的HttpServletRequest
import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import java.io.IOException;@Component @WebFilter(urlPatterns = {"/*"},filterName = "xssFilter") public class XssFilter implements Filter{@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {XssHttpServletRequestWrapper req=new XssHttpServletRequestWrapper((HttpServletRequest)request);chain.doFilter(req,response);}@Overridepublic void destroy() {} }總結
以上是生活随笔為你收集整理的java实现 XSS攻击防护的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java基础day24
- 下一篇: Javase小结