首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

Regex.Replace 透过正则表达式替换

2013-03-01 
Regex.Replace通过正则表达式替换各位大侠们,帮帮小弟吧。我现在想做一个防SQL注入的页面 需要过滤 and 等

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或者#号,就算前后都不是什么“字符、下划线”,你凭什么给人家录入信息改的面目全非?

人家录入什么信息就应该写入数据库什么信息。凭什么替换?替换为什么才合适?


[解决办法]

引用:
(?is)(?<=^
[解决办法]
\s)and(?=\s
[解决办法]
$)

+1

热点排行