如何测试mysqli的real_escape_string()?

时间:2013-08-02 13:34:39

标签: security mysqli sql-injection

我是mysqli的新手(不是mysql!)而且我正在更新一个当前的mysql函数,它保护一个字符串(或带有字符串的(递归)数组)以进行基本的卫生。

php.net mysqli::real_escape_string() manual对该字符集有一个非常明确的警告。我实现了这个。

我该如何测试?我找不到我要找的信息。我想我正在寻找输入的某些字符串导致不安全的结果,结果被认为是保存。

我的意思是“向'< - 单引号添加斜杠”。我正在寻找一些更高级的技巧或漏洞。

我也不是在寻找准备好的陈述。那些很精彩, 我很乐意使用那些 ,但此时不是一个选项,因为尽快更新我是一个旧系统,准备好的语句不是此时的一个选项。我将在未来添加这些内容。

1 个答案:

答案 0 :(得分:2)

我相信

Here is the code you are looking for。只需将mysql更改为mysqli。

另请注意

  • 此功能不是“保护”字符串,而是格式化它们。意味着必须处理进入查询的每个字符串,无论您是否将其视为“危险”。
  • 此函数必须用于格式化SQL 字符串文字。对于所有其他查询部分,它完全没用。
  • 此功能不应在应用程序代码中使用,但支持emulated prepared statements only

无论如何,如果您的数据库编码是传统的utf-8,那么根本不需要编码。 “一个明确的警告”实际上只与一些边缘和极少使用的编码有关。