正则表达式防止SQL注入
来源:互联网 发布:python exit code 139 编辑:程序博客网 时间:2024/05/22 02:30
本来对正则表达式不是很了解,但由于项目需要,项目主要没有采用存储过程方式来存储 SQL语句,所以很有可能被黑客用SQL注入攻击,现在就在网上找了找解决办法,在业务层来过滤SQL语句,防止SQL注入攻击,主要是采用了正则表达式,因为正则表达式对字符串的操作是很强大的.
首先用一个Validate()类来封装正则表达式和相关操作:
//验证是否有SQL注入字符
private bool ValidateQuery(Hashtable queryConditions)
{
//构造SQL的注入关键字符
#region 字符
string[] strBadChar = {"and"
,"exec"
,"insert"
,"select"
,"delete"
,"update"
,"count"
,"or"
//,"*"
,"%"
,":"
,"/'"
,"/""
,"chr"
,"mid"
,"master"
,"truncate"
,"char"
,"declare"
,"SiteName"
,"net user"
,"xp_cmdshell"
,"/add"
,"exec master.dbo.xp_cmdshell"
,"net localgroup administrators"};
#endregion
//构造正则表达式
string str_Regex = ".*("
for (int i = 0; i < strBadChar.Length - 1; i++)
{
str_Regex += strBadChar[i] + "|"
}
str_Regex += strBadChar[strBadChar.Length - 1] + ").*"
//避免查询条件中_list情况
foreach (string str in queryConditions.Keys)
{
if(str.Substring(str.Length - 5)=="_list")
{
//去掉单引号检验
str_Regex = str_Regex.Replace("|'|", "|");
}
string tempStr = queryConditions[str].ToString();
if (Regex.Matches(tempStr.ToString(), str_Regex).Count > 0)
{
//有SQL注入字符
return true;
}
}
return false;
}
queryConditions 是一个hashtable,用于传入查询条件,hashtable中的键值(key)为:@name,相对应SQL中的参数,那Value则对应为参数的实际值了.
正则表达式的应用主要是按这样的规律来过滤字符串的:
.*(and|exec|select|update|or|'|''|).* // str_Regex
核心函数主要是: Regex.Matches(tempStr.ToString(), str_Regex).
要是在 tempStr 字符串中含有非法字符, 则函数的Count值将大于0
好了,就这样就可以判断是否含有SQL注入攻击字符了.
- 正则表达式防止SQL注入
- 正则表达式防止SQL注入(C#版的)
- 使用正则表达式来防止SQL注入攻击
- php,防止js注入的正则表达式
- 正则表达式防SQL注入函数
- 防止sql注入
- asp 防止SQL注入
- sql注入防止办法
- sql注入防止办法
- 怎么防止[SQL注入
- 如何防止SQL注入
- 防止sql注入
- SQL注入防止攻击
- 防止sql注入攻击
- 防止SQL注入
- 如何防止SQL注入
- 防止SQL注入
- 防止SQL注入攻击
- 网通电信霸王服务几时休?
- 茅山煤矿轶事(一)花名册
- 中国已正式启动首批四艘航母建造工程
- 茅山煤矿轶事(四)——葫芦汤和电
- signal函数语义
- 正则表达式防止SQL注入
- 康托尔、哥德尔、图灵——永恒的金色对角线
- 常州闲话——豆斋饼 素火腿
- asp如何实现真正的动态包含(include)
- [转] left join/right join/inner join操作演示
- 图灵机杂思
- 怎样成为优秀的软件模型设计者?
- 如何实现合计字段分单位合计 (alv)
- VB中用第三方控件打造QQ菜单