Regex.Replace 通过正则表达式替换
各位大侠们,帮帮小弟吧。我现在想做一个防SQL注入的页面 需要过滤 and 等关键字,
像acband、andabc、avandc的不需要过滤替换,只要 and 前后不是字符,数字和下划线的 都要给AND直接替换掉。该如何实现呢?
private static string sqlFileterStr = "delete|drop|select|null|where|@@|#|$|max|sysadmin|db_owner|db_name|cmdshell|" +
"'|;|and|or|exec|insert|update|=|count|%|chr|mid|master|truncate|char|declare|" +
"--|net user|xp_cmdshell|/add|exec master.dbo.xp_cmdshell|net localgroup administrators|asc|''|from|";
private static string FilterString(string badString, string content)
{
Regex objRegex = new Regex(badString, RegexOptions.IgnoreCase);
content = objRegex.Replace(content, "");
return content;
}
我现在的代码是这样写的,只要发现关键字就会被替换。我想要的效果是当关键字前后不是数字,下划线,字符的才被替换。 正则表达式 regex
[解决办法]
[\s]+and[\s]+
[解决办法]
(?is)(?<=^
[解决办法]
\s)and(?=\s
[解决办法]
$)
[解决办法]
可怜的公司。
这种想当然的“替换”违背了基本的程序设计要求、基本的业务逻辑设要求。
比如说有个“日志信息”中包含char或者#号,就算前后都不是什么“字符、下划线”,你凭什么给人家录入信息改的面目全非?
人家录入什么信息就应该写入数据库什么信息。凭什么替换?替换为什么才合适?
[解决办法]