求一个防止SQL注入的正则表达式
利用正则表达式防止SQL注入,需要在输入的字符串中查找是否有给定的危险字符
串,如下所示:
var reg=/^[^(and|or|exec|insert|select|union|update|count|*|%)]*$/;
其中的and,or,exec,insert,select,union,update,count,*,%是危险字
符串,执行的时候有错误,无论什么字符输进去都说输入不正确,如果改为var
reg=/[^(and|or|exec|insert|select|union|update|count|*|%)]/;
没有错误,但是只能检查单独的字符串,如果是混合的字符串,如SQL注入语句:
1' or 1=1/*就无法检查出来。
附:源程序
var reg=/^[^(and|or|exec|insert|select|union|update|count|*|%)]*$/;
//表达式模板,过滤SQL注入语句,使用时根据情况动态调整内容
var str=document.searchForm.title.value;
var r = str.match(reg);
if (r==null&&str!="")
{ alert("输入语句含有不安全成分,请重新输入");
document.searchForm.title.value='';
document.searchForm.title.focus();
}