1. 程式人生 > 程式設計 >Java如何防止JS指令碼注入程式碼例項

Java如何防止JS指令碼注入程式碼例項

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]:(.*)[\\\"\\\']","\"\"");
    // 含有函式: eval
    xssMap.put("[e|E][v|V][a|A][l|L]\\((.*)\\)","");
    // 含有符號 <
    xssMap.put("<","<");
    // 含有符號 >
    xssMap.put(">",">");
    // 含有符號 (
    xssMap.put("\\(","(");
    // 含有符號 )
    xssMap.put("\\)",")");
    // 含有符號 '
    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 檢視,允許以鍵集、值集或鍵-值對映關係集的形式檢視某個對映的內容。對映順序 定義為迭代器在對映的 collection 檢視上返回其元素的順序。某些對映實現可明確保證其順序,如 TreeMap 類;另一些對映實現則不保證順序,如 HashMap 類。

Set<Map.Entry<K,V>> entrySet() 返回此對映中包含的對映關係的 Set 檢視。

2.java中判斷錄入的資訊是否包含emoji表情判斷:

/**
   * emoji表情字元正則表示式
   */
  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);
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。