无需连接到 DB 即可替代mysql_real_escape_string
2022-08-30 07:46:26
我希望有一个函数在没有连接到数据库的情况下表现得像mysql_real_escape_string,因为有时我需要在没有数据库连接的情况下进行干测试。mysql_escape_string已被弃用,因此是不可取的。我的一些发现:
http://www.gamedev.net/community/forums/topic.asp?topic_id=448909
我希望有一个函数在没有连接到数据库的情况下表现得像mysql_real_escape_string,因为有时我需要在没有数据库连接的情况下进行干测试。mysql_escape_string已被弃用,因此是不可取的。我的一些发现:
http://www.gamedev.net/community/forums/topic.asp?topic_id=448909
如果没有 DB 连接,就不可能安全地转义字符串。 预准备语句需要连接到数据库,以便它们可以使用适当的字符集转义字符串 - 否则使用多字节字符仍然可以进行SQL注入攻击。mysql_real_escape_string()
如果您只是在测试,那么您也可以使用 ,它不能100%保证免受SQL注入攻击,但是如果没有数据库连接,就不可能构建更安全的东西。mysql_escape_string()
好吧,根据mysql_real_escape_string函数参考页面:“mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,该函数转义了以下字符:\x00,\n,\r,\,',”和\x1a。
考虑到这一点,那么您发布的第二个链接中给出的函数应该完全符合您的要求:
function mres($value)
{
$search = array("\\", "\x00", "\n", "\r", "'", '"', "\x1a");
$replace = array("\\\\","\\0","\\n", "\\r", "\'", '\"', "\\Z");
return str_replace($search, $replace, $value);
}