我的正则表达式看起来像这样。
if (preg_match("/^[a-zA-Z0-9~@#$^*()_+=[\]{}|\\,.?: -]*$/", $text) == FALSE) {
echo 'Wrong!'
}
我想允许特殊字符'和'签名。我应该如何更好地实现它?以及它是否是mysql数据库的安全中断。
答案 0 :(得分:1)
最好通过转义来自用户的任何内容来阻止SQL注入。没有这个,
WHERE x = '$x'
$ x
' OR true OR '
变成
WHERE x = '' OR true OR ''
从而让黑客不知道x
的正确价值。这种黑客的变种允许真正令人讨厌的事情发生。
逃避会给出
WHERE x = '\' OR true OR \''
这将适当地失败,黑客将继续以另一种方式突破你的防御。
答案 1 :(得分:0)
准确地告诉我你想在字段中启用哪些字符和符号?我将编辑正则表达式..基本上它应该是这样的:
$yourString = "blahblah";
if (preg_match('/^[A-Za-z0-9_-]*$/', $yourString)) {
#your string is good!
}
else {
#your string is wrong.
}