1. 程式人生 > >JS防止指令碼注入(替換特殊字元)

JS防止指令碼注入(替換特殊字元)

htmlEncode: (function() {
        var entities = {
            '&': '&',
            '>': '>',
            '<': '<',
            '"': '"'
        }, keys = [], p, regex;

        for (p in entities) {
            keys.push(p);
        }

        regex = new RegExp('(' + keys.join('|') + ')', 'g');

        return function(value) {
            return (!value) ? value : String(value).replace(regex, function(match, capture) {
                return entities[capture];
            });
        };
    })()

使用時再將html字元轉回

htmlDecode: (function() {
            var entities = {
                '&': '&',
                '>': '>',
                '<': '<',
                '"': '"'
            }, keys = [], p, regex;

            for (p in entities) {
                keys.push(p);
            }

            regex = new RegExp('(' + keys.join('|') + '|&#[0-9]{1,5};' + ')', 'g');

            return function(value) {
                return (!value) ? value : String(value).replace(regex, function(match, capture) {
                    if (capture in entities) {
                        return entities[capture];
                    } else {
                        return String.fromCharCode(parseInt(capture.substr(2), 10));
                    }
                });
            };
        })()


相關推薦

JS防止指令碼注入替換特殊字元

htmlEncode: (function() { var entities = { '&': '&', '>': '>', '<': '<',

四位元組字元特殊字元入庫報錯解決方案

錯誤資訊: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x99\x8F" 解決辦法:       1. 將表字段字符集設定成utf8mb4 ,並執行插入前執行:SE

URL的引數中有加號傳值的問題URL特殊字元

URL特殊字元需轉義 空格換成加號(+)   正斜槓(/)分隔目錄和子目錄   問號(?)分隔URL和查詢   百分號(%)制定特殊字元   #號指定書籤   &號分隔引數   轉義字元的原因:  如果你的表單使用get方法提交,並且提交的引數中有“&”等特殊符的話,如果不做處理,在serv

JS中用replace替換特殊字元

1、替換一個字元                 taskName=taskName.replace(/<p>/,"");或者 ta

用Javascriptjs進行HTML轉義工具處理特殊字元顯示

$package("js.lang"); // 沒有包管理時,也可簡單寫成 js = {lang:{}}; js.lang.String = function(){ this.REGX_HTML_ENCODE = /"|&|'|<|>|[\x00-\x20]|[\x7F-\xF

sqlitesql替換特殊字元換行,tab鍵等

換tab  sql語句: UPDATE table_name SET field_name=REPLACE(field_name,char(09),'') 但是 sqlite會報錯 在sqlite中 換tab 為x'09'所以sql為:  update  question_

js生成隨機字串數字,字母,特殊字元

方法 /* ** randomWord 產生任意長度隨機字母數字組合 ** randomFlag 是否任意長度 min 任意長度最小位[固定位數] max 任意長度最大位 ** yuejingge 2

js防止瀏覽器後退鍵盤、鼠標手勢

產生 鼠標 listen 防止 所有 cti ops url 後退 這種方式,可以消除 後退的所有動作。包括 鍵盤、鼠標手勢等產生的後退動作 history.pushState(null, null, document.URL); window.addEv

python--替換特殊字元

替換特殊字元:將‘\'’替換為空格 def check_quoto(str, n): for i in range(len(str) - int(n)): npos_q = -1 npos_b = -1 while keys[i + int(n

Oracle將字串轉換為數字,並替換特殊字元

分類: Oracle(22) Oracle自帶有to_number函式,但需要說明的是這個函式只能轉換字串格式是正確數字的情況, 也就是一旦字串為空,或者有特殊字元,或者有空格等等,都會拋錯,以下提供一種方式成功解決以上問題: TO_NUMBER(decode(deco

shell指令碼expect命令send特殊字元

http://expect.sourceforge.net/FAQ.html#q54 可以用od命令檢視要傳送的字元, 1. od -c 2.輸入字元,如ctrl+],回車 3.ctrl+D 螢幕會顯示如下內容: ^] 0000000 035  \n 0000002 其

XssFilter防止指令碼注入防止xss攻擊

主要用到commons-lang3-3.1.jar這個包的org.apache.commons.lang3.StringEscapeUtils.escapeHtml4()這個方法。 解決過程主要在使用者輸入和顯示輸出兩步:在輸入時對特殊字元如<>"

java替換特殊字元

今天處理bug,介面輸入特殊字元(零寬空白),一種前端js控制替換特殊字元;一種java後端控制 package com.shallowan.spring.boot.blog; import java.io.IOException; import java.util.re

shell中vi替換特殊字元(製表符\t等)的方法

今天看shell教程,看了下特殊字元裡面還真不少,順便練下手 echo ------------------------------------ echo "|a\t|ab\t|abc\t|abcd\t|abcde\t|abcdef\t|" echo ---------------------------

hive udf函式替換特殊字元

import org.apache.hadoop.hive.ql.exec.UDF; public class Rep_Ascii extends UDF { private String str = null; public String evaluate(S

JS控制文字框禁止輸入特殊字元

JS 控制不能輸入特殊字元<input type="text" class="domain" onkeyup="this.value=this.value.replace(/[^u4e00-u9

js基礎第二天if判斷語句

執行 部分 nbsp -s cnblogs 簡單 ges logs mat if是js比較重要的部分,內容比較簡單,單是在工作中是用的最多的。今天已經把表單的部分補齊了。 If...else 條件判斷 if(條件表達式){ 如果條件是true,執行該處代

JS面向對象封裝,繼承

通過 ray 混合 字母 顯示 彈出 pan rip http 在六月份找工作中,被問的最多的問題就是: js面向對象,繼承,封裝,原型鏈這些,你了解多少? 額,,,我怎麽回答呢, 只能說,了解一些,不多不少,哈哈哈哈,當然,這是玩笑話。 不過之前學過java,來理解這些還

js獲取當前時間包含am pm

date 當前 ole nth inf color UNC function fun var fn = function(){ var now = new Date; var y = now.getFullYear(); var m = now.g

js 數組方法個人學習筆記

rev 了解 很多 com 過濾 接收參數 版本 push 操作數 首先,創建數組的兩個方法:   1.構造函數:  var array = new Array();//新建一個空數組 var array1 = new Array(20);//新建一個長度為20位的空數組