特殊字符与转义

时间:2023-01-14 06:37:09

       页面的文本框经常会遇到一些输入特殊字符的问题,这些特殊字符很可能造成页面跳转失败,sql注入,数据读出失败等问题。

     

      (1) 页面跳转的实现方式经常写这样的代码:


         window.location.href = '/DetailJudementByClass/Index?QuestionID=' + questionID + "&state="+state;


         当questionID和state出现&符号时,就会出现错误。


       (2)sql注入最经典的例子是‘1=1’的问题,当文本框中输入类似的符号便会出现问题了。


       (3)数据库设计经常会经常使用#符号作为分隔符进行拼接数据,当存入数据库的数据存放入#时就造成数据混乱。


         解决方法(1):

    function noNumbers(e) {

var pattern = new RegExp("[`~!@@#%$\"^&*()=|{}':;',\\[\\].<>/?~!@@#¥……&*()——|{}【】‘;:”“'。,、?]")
var rs = "";
for (var i = 0; i < e.length; i++) {
rs = rs + e.substr(i, 1).replace(pattern, '\\' + e.substr(i, 1));
}
$.get("/test/testAction", {"test":e,"a":e,"b":e}, function (data) {
alert(data);
});
return rs;
}


      解决思路,将特殊符号加上‘\’,转换成普通字符。


      解决方法(2):

    function TextValidate() {
var code;
var character;
var err_msg = "文件夹名称不能包含下列字符之一:\n \\ / : * ? \" < > | & , ";
if (document.all) {
code = window.event.keyCode;
}
else {
code = arguments.callee.caller.arguments[0].which;
}
var character = String.fromCharCode(code);
var txt = new RegExp("[\\*,\\&,\\\\,\\/,\\?,\\|,\\:,\\<,\\!,\\(,\\),\\{,\\},\\#,\\$,\\%,\\_.\\-,\\=,\\^,\\>,\"]");
if (txt.test(character)) {

if (document.all) {
document.getElementById("userName").textContent = document.getElementById("userName").textContent + '\\' + character;
window.event.returnValue = false;
}
else {
document.getElementById("userName").textContent =document.getElementById("userName").textContent+ '\\' + character;
arguments.callee.caller.arguments[0].preventDefault();
}
}
}


      为了将特殊符号传入后台,可以使用ajax或post定义data的方式进行传递,也可以防止部分特殊字符无法传递的问题。