温馨提示×

ajax如何防止sql注入

小新
516
2021-01-07 16:26:45
栏目: 云计算

ajax如何防止sql注入

ajax防止sql注入的方法:

将以下代码放在公用的js里面即可,如:

$.ajaxSetup({

contentType: "application/x-www-form-urlencoded;charset=utf-8",

beforeSend: function() { //发送前执行的函数

try {

/**

* 当 processData: false,此时后台接收的值都会是object类型。此时应该把所有参数拿出来做成序列化形式 如:"name=bill&age=18" 否则后台无法接收

* 当 processData: true或者不设置时 json数据是已经序列化成字符类型 。如:"name=bill&age=18"。应用以下方法;

*/

//var params = arguments[1].data;

//if (params !== "" || params !== null) {

// var re = /select|update|delete|truncate|join|union|exec|insert|drop|count|’|--|"|=|;|>|<|%/i;

// params.split('&').forEach(function (item) { //js的forEach()方法

// item = item.split("=");

// var name = item[0];//名称

// var val = item[1];//值

// if (re.test(item[1])) {

// alert("请勿输入非法字符");

// arguments[0].abort(); //终止请求

// //请求方法记录相关日志

// //location.href = arguments[1].data.replace(sQuery, "");

// }

// });

//}

var params = arguments[1].data; //arguments是一个两个值的数组分别是0和1

re = /select|update|delete|truncate|join|union|exec|insert|drop|count|’|--|"|=|;|>|<|%/i; //可以根据需求自定义加减

for(var key in params) {

console.log(params[key]);

if(re.test(params[key])) {

alert("请勿输入非法字符");

arguments[0].abort(); //终止请求

//请求方法记录相关日志

//location.href = params.replace(sQuery, "");//跳转到某个页面

}else{

//加密在此处做。后台可以做全局统一解密

//此时应该把所有参数拿出来做成序列化形式 如:"name=bill&age=18" 否则后台无法接收

}

}

} catch(e) {

console.log(e);

//请求方法记录相关日志

}

},

complete: function(XMLHttpRequest, textStatus) {

try {

//通过XMLHttpRequest取得响应头,sessionstatus,

//var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");

//if(sessionstatus == "timeout") {

//如果超时就处理 ,指定要跳转的页面(比如登陆页)

//}

//此处可以对响应回来的数据进行解密

debugger;

if(textStatus !== "error") {

//通过XMLHttpRequest取得响应结果

var res = XMLHttpRequest.responseText;

var jsonData = JSON.parse(res);

console.log(jsonData);

if(jsonData.state == -1) {

//如果超时就处理 ,指定要跳转的页面(比如登陆页)

alert(jsonData.msg);

window.location.replace("/login/index.php");

} else if(jsonData.state == 0) {

//其他的异常情况,给个提示。

alert(jsonData.msg);

} else {

//正常情况就不统一处理了

}

}

//请求方法记录相关日志

} catch(e) {

console.log(e);

//请求方法记录相关日志

}

},

error: function(jqXHR, textStatus, errorMsg) { // 出错时默认的处理函数

try {

// jqXHR 是经过jQuery封装的XMLHttpRequest对象

// textStatus 可能为: null、"timeout"、"error"、"abort"或"parsererror"

// errorMsg 可能为: "Not Found"、"Internal Server Error"等

// 提示形如:发送AJAX请求到"/index.html"时出错[404]:Not Found

alert('发送AJAX请求到"' + this.url + '"时出错[' + jqXHR.status + ']:' + errorMsg);

//请求方法记录相关日志

} catch(e) {

console.log(e);

//请求方法记录相关日志

}

},

statusCode: { //自定义返回消息

404: function() {

alert('数据获取/输入失败,没有此服务。404');

},

504: function() {

alert('数据获取/输入失败,服务器没有响应。504');

},

500: function() {

alert('服务器有误。500');

}

},

processData: false, //默认不序列化参数//dataFilter:对响应的数据进行过滤

});

0