一个简单的正则过滤sql注入的问题?
1、下面是正确的:
func main() {
str := `(?:')|(?:--)|(/\\*(?:.|[\\n\\r])*?\\*/)|(\b(select|update|and|or|delete|insert|trancate|char|chr|into|substr|ascii|declare|exec|count|master|into|drop|execute)\b)`
re, err := regexp.Compile(str)
if err != nil {
fmt.Println(err.Error())
return
}
aa := "存在 select"
fmt.Println(re.MatchString(aa)) //打印出true。
}
2、将str:=。。。一行中的改为" ",则不正确。 字符串没有跨行。
func main() {
str := "(?:')|(?:--)|(/\\*(?:.|[\\n\\r])*?\\*/)|(\b(select|update|and|or|delete|insert|trancate|char|chr|into|substr|ascii|declare|exec|count|master|into|drop|execute)\b)" //此处改为“
re, err := regexp.Compile(str)
if err != nil {
fmt.Println(err.Error())
return
}
aa := "存在 select"
fmt.Println(re.MatchString(aa)) //打印出false。
}
字符串一直没有跨行,而仅仅是``和""的不同。两者的区别,还是正则的问题? 请帮忙看一下。
共 3 个回复
stevewang
``里一些字符不转义,而在""里则转义。 所以你这两个程序的字符串str是完全不同的。
dxhdxh2k
谢谢!
smutear
http://freeman983.iteye.com/blog/1153989