C#检测是否有危险字符的SQL字符串过滤方法
程序员文章站
2024-02-21 08:06:34
本文以一个c#的sql数据库字串操作函数为例,说明如何实现对sql字符串过滤、检测sql是否有危险字符、修正sql语句中的转义字符,确保sql不被注入等功能。具体实现代码如...
本文以一个c#的sql数据库字串操作函数为例,说明如何实现对sql字符串过滤、检测sql是否有危险字符、修正sql语句中的转义字符,确保sql不被注入等功能。具体实现代码如下:
sql字符串过滤函数:
public static bool processsqlstr(string str) { bool returnvalue = true; try { if (str.trim() != "") { string sqlstr = "exec|insert+|select+|delete|update|count|chr|mid|master+|truncate|char|declare|drop+|drop+table|creat+|create|*|iframe|script|"; sqlstr += "exec+|insert|delete+|update+|count(|count+|chr+|+mid(|+mid+|+master+|truncate+|char+|+char(|declare+|drop+table|creat+table"; string[] anysqlstr = sqlstr.split('|'); foreach (string ss in anysqlstr) { if (str.tolower().indexof(ss) >= 0) { returnvalue = false; break; } } } } catch { returnvalue = false; } return returnvalue; }
以下是检测sql语句中是否包含有非法危险的字符:
/// <summary> /// 检测是否有sql危险字符 /// </summary> /// <param name="str">要判断字符串</param> /// <returns>判断结果</returns> public static bool issafesqlstring(string str) { return !regex.ismatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']"); } /// <summary> /// 改正sql语句中的转义字符 /// </summary> public static string mashsql(string str) { string str2; if (str == null) { str2 = ""; } else { str = str.replace("\'", "'"); str2 = str; } return str2; }
上一篇: Java内存溢出和内存泄露
下一篇: java字符串拼接与性能分析详解