日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java過濾特殊字符操作(xss攻擊解決方案)

瀏覽:149日期:2022-08-09 16:19:07

XSS ,全名:cross-site scripting(跨站點腳本),是當前 web 應用中最危險和最普遍的漏洞之一。攻擊者嘗試注入惡意腳本代碼(常js腳本)到受信任的網站上執行惡意操作,用戶使用瀏覽器瀏覽含有惡意腳本頁面時,會執行該段惡意腳本,進而影響用戶(比如關不完的網站、盜取用戶的 cookie 信息從而偽裝成用戶去操作)等等。

它與 SQL 注入很類似,同樣是通過注入惡意指令來進行攻擊。但 SQL 注入是在服務器端上執行的,而 XSS 攻擊是在客戶端上執行的,這點是他們本質區別。

其實,個人感覺對于xss攻擊不必區分究竟是反射型XSS、存儲型XSS還是DOM Based XSS,只需要知道如何去防護。而防護的最有效的措施就是過濾,對前端頁面提交到后臺的內容進行過濾。具體如下:

1.解決方法一

攔截所有的請求參數,對請求參數中包含特殊字符’<‘或’>’進行過濾。

package com.haier.openplatform.srm.base.filter;import java.io.IOException;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse;import org.springframework.web.filter.OncePerRequestFilter;public class StringFilter extends OncePerRequestFilter{@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)throws ServletException, IOException {chain.doFilter(new StringFilterRequest((HttpServletRequest)request), response);}}class StringFilterRequest extends HttpServletRequestWrapper {public StringFilterRequest(HttpServletRequest request) {super(request);}@Overridepublic String getParameter(String name) {// 返回值之前 先進行過濾return filterDangerString(super.getParameter(name));}@Overridepublic String[] getParameterValues(String name) {// 返回值之前 先進行過濾String[] values = super.getParameterValues(name);if(values==null){return null;}for (int i = 0; i < values.length; i++) {values[i] = filterDangerString(values[i]);}return values;}@Overridepublic Map getParameterMap() {Map keys = super.getParameterMap();Set set = keys.entrySet();Iterator iters = set.iterator();while (iters.hasNext()) {Object key = iters.next();Object value = keys.get(key);keys.put(key, filterDangerString((String[]) value));}return keys;}/*@Overridepublic Object getAttribute(String name) {// TODO Auto-generated method stubObject object = super.getAttribute(name);if (object instanceof String) {return filterDangerString((String) super.getAttribute(name));} elsereturn object;}*/public String filterDangerString(String value) {if (value == null) {return null;}//value = value.replaceAll('{', '{');value = value.replaceAll('<', '&lt;');value = value.replaceAll('>', '&gt;');//value = value.replaceAll('t', ' ');//value = value.replaceAll('rn', 'n');//value = value.replaceAll('n', '<br/>');//value = value.replaceAll('’', '&#39;');//value = value.replaceAll('', '&#92;');//value = value.replaceAll(''', '&quot;');//value = value.replaceAll('}', '?').trim();return value;}public String[] filterDangerString(String[] value) {if (value == null) {return null;}for (int i = 0; i < value.length; i++) {String val = filterDangerString(value[i]);value[i] = val;}return value;}}

web.xm中的過濾器配置:

<filter> <filter-name>StringFilter</filter-name> <filter-class>com.xxx.base.filter.StringFilter</filter-class> </filter> <filter-mapping> <filter-name>StringFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>2.解決方法二(轉,未驗證)2.1前端過濾

2.1.1 javascript 原生方法

//轉義 元素的innerHTML內容即為轉義后的字符 function htmlEncode ( str ) { var ele = document.createElement(’span’); ele.appendChild( document.createTextNode( str ) ); return ele.innerHTML; } //解析 function htmlDecode ( str ) { var ele = document.createElement(’span’); ele.innerHTML = str; return ele.textContent; }

2.1.2 JQuery 方法

function htmlEncodeJQ ( str ) { return $(’<span/>’).text( str ).html(); } function htmlDecodeJQ ( str ) { return $(’<span/>’).html( str ).text(); }

2.1.3 調用方法

var msg1= htmlEncodeJQ(’<script>alert(’test’);</script>’);var msg1= htmlEncode(’<script>alert(’test’);</script>’);//結果變成:&lt;script&gt;alert(’test’);&lt;/script&gt;2.2 后端過濾

2.2.1 java 一些框架自動工具類,

比如:org.springframework.web.util.HtmlUtils

public static void main(String[] args) { String content = '<script>alert(’test’);</script>'; System.out.println('content='+content); content = HtmlUtils.htmlEscape(content); System.out.println('content='+content); content = HtmlUtils.htmlUnescape(content); System.out.println('content='+content);}

但這樣有個問題,就是它全部的html標簽都不解析了。

可能這不是你想要的,你想要的是一部分解析,一部分不解析。好看下面。

2.2.2 自己用正則來完成你的需求

package top.lrshuai.blog.util;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * * @author lrshuai * @since 2017-10-13 * @version 0.0.1 */public class HTMLUtils {/** * 過濾所有HTML 標簽 * @param htmlStr * @return */public static String filterHTMLTag(String htmlStr) { //定義HTML標簽的正則表達式 String reg_html='<[^>]+>'; Pattern pattern=Pattern.compile(reg_html,Pattern.CASE_INSENSITIVE); Matcher matcher=pattern.matcher(htmlStr); htmlStr=matcher.replaceAll(''); //過濾html標簽 return htmlStr;}/** * 過濾標簽,通過標簽名 * @param htmlStr * @param tagName * @return */public static String filterTagByName(String htmlStr,String tagName) { String reg_html='<'+tagName+'[^>]*?>[sS]*?</'+tagName+'>'; Pattern pattern=Pattern.compile(reg_html,Pattern.CASE_INSENSITIVE); Matcher matcher=pattern.matcher(htmlStr); htmlStr=matcher.replaceAll(''); //過濾html標簽 return htmlStr;}/** * 過濾標簽上的 style 樣式 * @param htmlStr * @return */public static String filterHTMLTagInStyle(String htmlStr) { String reg_html='style=(’|')(.*?)(’|')'; Pattern pattern=Pattern.compile(reg_html,Pattern.CASE_INSENSITIVE); Matcher matcher=pattern.matcher(htmlStr); htmlStr=matcher.replaceAll(''); //過濾html標簽 return htmlStr;}/** * 替換表情 * @param htmlStr * @param tagName * @return */public static String replayFace(String htmlStr) { String reg_html='[em_d{1,}]'; Pattern pattern =Pattern.compile(reg_html,Pattern.CASE_INSENSITIVE); Matcher matcher=pattern.matcher(htmlStr); if(matcher.find()) {matcher.reset();while(matcher.find()) { String num = matcher.group(0); String number=num.substring(num.lastIndexOf(’_’)+1, num.length()-1); htmlStr = htmlStr.replace(num, '<img src=’/face/arclist/'+number+'.gif’ border=’0’ />');} } return htmlStr;} public static void main(String[] args) {String html = '<script>alert(’test’);</script><img src=’/face/arclist/5.gif’ border=’0’ /><div style=’position:fixs;s’></div><style>body{color:#fff;}</style><Style>body{color:#fff;}</Style><STYLE>body{color:#fff;}</STYLE>';System.out.println('html='+html);html = HTMLUtils.filterTagByName(html, 'style');System.out.println('html='+html);html = HTMLUtils.filterTagByName(html, 'script');System.out.println('html='+html);html = HTMLUtils.filterHTMLTagInStyle(html);System.out.println('html='+html); }}java 過濾特殊字符串升級版

ASCII碼中除了32之外還有160這個特殊的空格 db中的空格 不間斷空格->頁面上的&nbsp所產生的空格;

/** * 過濾特殊字符 * @param str * @return * * u00A0 特殊的空格 */ public static String stringFilter (String str){String regEx='[u00A0s'`~!@#$%^&*()+=|{}’:;’,[].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]';Pattern p = Pattern.compile(regEx);Matcher m = p.matcher(str);return m.replaceAll('').trim(); }

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩欧美三级| 激情不卡一区二区三区视频在线| 国产精品男女| 精品视频一区二区三区四区五区 | 亚洲精品一二三区区别| 9国产精品视频| 亚洲日本欧美| 欧美激情一区| 日本精品影院| 亚洲精品影视| 久久精品97| 四虎国产精品免费观看| 欧美午夜精彩| 日本h片久久| 国产精品17p| 久久精品亚洲人成影院| 亚洲三区欧美一区国产二区| 国产精品任我爽爆在线播放| 电影亚洲精品噜噜在线观看| 男女男精品视频网| 狂野欧美性猛交xxxx| 亚洲福利专区| 国产日韩欧美中文在线| 成人精品亚洲| 91精品在线免费视频| 麻豆精品99| 亚洲精品在线观看91| 国产欧美高清视频在线| 欧美性感美女一区二区| 国产欧美一级| 亚洲欧美日韩高清在线| 久久国际精品| 久久精品高清| 国产精品激情电影| 国产女优一区| 精品欧美日韩精品| 久久亚洲美女| 不卡专区在线| 日本欧美大码aⅴ在线播放| 日韩中文影院| 日韩中文av| 欧美精选视频一区二区| 无码日韩精品一区二区免费| 综合日韩av| 欧美在线观看天堂一区二区三区| 色吊丝一区二区| 国产精品最新自拍| 久久亚洲色图| 午夜av不卡| 国产日本精品| 亚洲在线国产日韩欧美| 黄色aa久久| 国产视频网站一区二区三区| 亚洲精品1区| 国产盗摄——sm在线视频| 亚洲综合福利| 9国产精品视频| 91精品精品| 精品一区二区三区四区五区| 亚洲免费影院| 久久国产影院| 成人在线视频中文字幕| 国产亚洲字幕| 亚洲ww精品| 蜜臀va亚洲va欧美va天堂| 激情欧美亚洲| 激情婷婷亚洲| 欧美日韩亚洲在线观看| 免费看av不卡| 亚洲美女久久精品| 久久99久久人婷婷精品综合| 欧美在线精品一区| 亚洲影视一区二区三区| 国产精品试看| 欧美搞黄网站| 亚洲激情五月| 国产一区二区三区自拍| 女生影院久久| 亚洲综合电影| 中文字幕在线免费观看视频| 精品亚洲精品| 国产一区二区精品久| 美腿丝袜亚洲三区| 国产精品巨作av| 国产精品二区影院| 国产精区一区二区| 国产免费av一区二区三区| 日本不卡视频一二三区| 热久久久久久久| 巨乳诱惑日韩免费av| 爽好久久久欧美精品| 9国产精品视频| 老鸭窝毛片一区二区三区| 99在线精品免费视频九九视 | 久久久久久夜| 日韩欧美在线中字| 欧美一区二区三区高清视频| 久久久精品午夜少妇| 日本不良网站在线观看| 日韩免费福利视频| 日韩成人亚洲| 国产二区精品| 男人操女人的视频在线观看欧美| 在线一区欧美| 中文字幕日本一区| 国产精品久久久久久久免费软件 | 国产激情久久| 91亚洲国产高清| 久久在线免费| 亚洲午夜国产成人| 国产精品一区二区三区四区在线观看| 欧美亚洲二区| 国产美女高潮在线观看| 欧美不卡视频| 日产欧产美韩系列久久99| 麻豆久久久久久久| 国产一区丝袜| 日韩综合精品| 另类激情亚洲| 久久精品97| 狠狠躁少妇一区二区三区| 国产 日韩 欧美一区| 一区在线免费观看| 久久激五月天综合精品| 成人精品国产亚洲| 婷婷综合激情| 日韩欧美另类中文字幕| 国产情侣久久| 婷婷激情久久| 亚洲一级大片| 精品国产精品国产偷麻豆| 久久久精品久久久久久96| 石原莉奈在线亚洲三区| 精品美女久久| 亚洲免费婷婷| 欧美aaaaaa午夜精品| 91精品精品| 日韩成人精品一区二区三区| 91看片一区| 日韩激情av在线| 国产精品亚洲一区二区三区在线观看| 亚洲国产日韩欧美在线| 欧美精品国产一区| 免费观看不卡av| 国产乱码精品一区二区三区四区| 免费污视频在线一区| 欧美视频久久| 欧美另类专区| 国产成人精品999在线观看| 久热re这里精品视频在线6| 另类欧美日韩国产在线| 一本色道久久精品| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 日本欧美在线看| 加勒比视频一区| 亚洲精品婷婷| 香蕉久久精品| 精品美女久久| 日韩精品a在线观看91| 日本美女一区| 日韩精品1区2区3区| 日韩在线高清| 麻豆久久一区| 亚洲激情偷拍| 成人精品国产亚洲| 日韩极品在线观看| 欧美日韩国产一区精品一区| 国产69精品久久| 久久黄色影视| 亚洲主播在线| 久久麻豆精品| 国产传媒在线| 国产精品igao视频网网址不卡日韩| 99精品99| www成人在线视频| 国产精品成人自拍| 蜜臀av在线播放一区二区三区| 欧美日韩免费观看视频| 国产精品日本一区二区不卡视频| 一区二区三区四区在线观看国产日韩| 99久久夜色精品国产亚洲1000部| 国产探花一区二区| 中文字幕av一区二区三区人| 欧美日韩在线网站| 天堂av在线| 国产黄大片在线观看| 国产精品一区二区三区美女| 综合亚洲自拍| 蜜桃传媒麻豆第一区在线观看| 亚洲v在线看| 蜜臀久久精品| 国内不卡的一区二区三区中文字幕| 日本午夜精品久久久久| 综合色一区二区| 免费在线观看成人| 免费成人av在线播放| 亚洲制服少妇| 三级一区在线视频先锋| 日韩影院在线观看| 亚洲综合图色|