Java如何防止JS腳本注入代碼實(shí)例
1.java中防止JS腳本注入的工具類-通用
public class XssUtil { private static Map<String, String> xssMap = new LinkedHashMap<String, String>(); private static Map<String, String> xssNewMap = new LinkedHashMap<String, String>(); static { init(); } public static void init() { // 含有腳本: script xssMap.put("[s|S][c|C][r|R][i|C][p|P][t|T]", ""); // 含有腳本 javascript xssMap.put("[\\\"\\\'][\\s]*[j|J][a|A][v|V][a|A][s|S][c|C][r|R][i|I][p|P][t|T]:(.*)[\\\"\\\']", "\"\""); // 含有函數(shù): eval xssMap.put("[e|E][v|V][a|A][l|L]\\((.*)\\)", ""); // 含有符號(hào) < xssMap.put("<", "<"); // 含有符號(hào) > xssMap.put(">", ">"); // 含有符號(hào) ( xssMap.put("\\(", "("); // 含有符號(hào) ) xssMap.put("\\)", ")"); // 含有符號(hào) ' xssMap.put("'", "'"); } /** * 清除惡意的XSS腳本 */ public synchronized static String cleanXSS(String value) { String result = value; for (Map.Entry<String, String> entry : xssMap.entrySet()) { String key = entry.getKey(); String val = entry.getValue(); result = result.replaceAll(key, val); } return result; }
Map 接口提供三種collection 視圖,允許以鍵集、值集或鍵-值映射關(guān)系集的形式查看某個(gè)映射的內(nèi)容。映射順序 定義為迭代器在映射的 collection 視圖上返回其元素的順序。某些映射實(shí)現(xiàn)可明確保證其順序,如 TreeMap 類;另一些映射實(shí)現(xiàn)則不保證順序,如 HashMap 類。
Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射關(guān)系的 Set 視圖。
2.java中判斷錄入的信息是否包含emoji表情判斷:
/** * emoji表情字符正則表達(dá)式 */ private static final String EMOJI_REGEX = "[\\s\\S]*[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff][\\s\\S]*"; public static boolean hasEmojiStr(String str){ String notBlankStr = org.apache.commons.lang3.StringUtils.trimToEmpty(str); return notBlankStr.matches(EMOJI_REGEX); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
m1 Mac設(shè)置多jdk版本并動(dòng)態(tài)切換的實(shí)現(xiàn)
本文主要介紹 Mac 下如何安裝 JDK 并且多版本如何切換,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08MyBatis-Plus實(shí)現(xiàn)2種分頁(yè)方法(QueryWrapper查詢分頁(yè)和SQL查詢分頁(yè))
本文主要介紹了MyBatis-Plus實(shí)現(xiàn)2種分頁(yè)方法,主要包括QueryWrapper查詢分頁(yè)和SQL查詢分頁(yè),具有一定的參考價(jià)值,感興趣的可以了解一下2021-08-08SpringBoot可視化監(jiān)控的具體應(yīng)用
最近越發(fā)覺(jué)得,任何一個(gè)系統(tǒng)上線,運(yùn)維監(jiān)控都太重要了,本文介紹了SpringBoot可視化監(jiān)控的具體應(yīng)用,分享給大家,有興趣的同學(xué)可以參考一下2021-06-06java虛擬機(jī)學(xué)習(xí)筆記基礎(chǔ)篇
在本篇文章里小編給大家整理的是關(guān)于java虛擬機(jī)學(xué)習(xí)筆記的相關(guān)內(nèi)容,分享了一些基礎(chǔ)知識(shí)點(diǎn),需要的朋友們參考下。2019-06-06深入了解HttpClient的ResponseHandler接口
這篇文章主要為大家介紹了深入了解HttpClient的ResponseHandler接口,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10selenium高效應(yīng)對(duì)Web頁(yè)面元素刷新的實(shí)例講解
今天小編就為大家分享一篇selenium高效應(yīng)對(duì)Web頁(yè)面元素刷新的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05spring基于通用Dao的多數(shù)據(jù)源配置詳解
這篇文章主要為大家詳細(xì)介紹了spring基于通用Dao的多數(shù)據(jù)源配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下解2018-03-03Java中Base64和File之間互轉(zhuǎn)代碼示例
這篇文章主要給大家介紹了關(guān)于Java中Base64和File之間互轉(zhuǎn)的相關(guān)資料,Base64是網(wǎng)絡(luò)上最常見(jiàn)的用于傳輸8Bit字節(jié)碼的編碼方式之一,Base64就是一種基于64個(gè)可打印字符來(lái)表示二進(jìn)制數(shù)據(jù)的方法,需要的朋友可以參考下2023-08-08springmvc4+hibernate4分頁(yè)查詢功能實(shí)現(xiàn)
本篇文章主要介紹了springmvc4+hibernate4分頁(yè)查詢功能實(shí)現(xiàn),Springmvc+hibernate成為現(xiàn)在很多人用的框架整合,有興趣的可以了解一下。2017-01-01解決idea使用maven編譯正常但是運(yùn)行項(xiàng)目時(shí)卻提示很多jar包找不到的問(wèn)題
這篇文章主要介紹了解決idea使用maven編譯正常但是運(yùn)行項(xiàng)目時(shí)卻提示很多jar包找不到的問(wèn)題,本文分多種情形給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07