我有一个MYSQL类,我想安全地防止SQL注入,所以我想到了一个检查算法。例如:
query("SELECT * FROM xyz WHERE id = @1 AND name = '@2' AND pwd = '@3' AND somenumber = @4", param1, param2, param3, param4)
此正则表达式必须与@ 1和@ 4匹配,因此第一个和第四个参数应为整数。
我试过了:
[^'"]@\d+[^'"]
但它不匹配:
@1,@4,@5
什么是正确的表达?
提前谢谢。
答案 0 :(得分:1)
如果您想要@ 123而不是“@ 123”,请使用
(?<!["'])@\d+(?!['"])
你的正则表达式做了什么:
[^'"]
匹配一个«除了
字符串'“»@\d+
匹配一个符号和as
尽可能多的数字[^'"]
匹配另一个«任何东西
但字符串'“»因此它会匹配d @ 12),@ @ 0 @,k @ 09。 ......