如何在没有mysql_real_escape_sequence()的情况下清理$ _REQUEST

时间:2012-03-08 09:50:15

标签: php mysql

我一直在使用php / mysql一段时间了,我想在程序开始时清理所有我的超级全局,我还没有连接到任何数据库。有没有任何其他PHP定义的函数来使变量sql安全。任何人都可以告诉我为什么在使用mysql_real_escapce_string

之前需要一个活动的mysql连接

2 个答案:

答案 0 :(得分:3)

  

我想在程序开始时清理所有超级全局变量。

这不是最好的主意。您应该根据上下文清理变量。如果通过mysql_real_escape_string()运行所有变量,当您想在SQL上下文之外使用变量时,可能会发现问题。

  

是否有任何其他PHP定义的函数可以使变量SQL安全?

您可以将绑定参数用于PDO等库。

  

有人可以告诉我为什么在使用mysql_real_escape_string()之前需要有效的MySQL连接吗?

我相信这是因为函数需要知道数据库正在使用的字符集,以便它可以正确转义。

答案 1 :(得分:0)

这个想法是完全错误的。

  1. 进行批量消毒没有意义。事实上,你正在尝试重新发明臭名昭着的魔术引号功能,这些功能最终在上一版本中被禁止使用。想一想。
  2. “mysql_real_escape_sequence”无论如何都不会使“数据”“安全”
  3. 使用mysql_real_escape_string(),您只能转义SQL字符串。当他们去查询。 任何字符串,不仅是来自请求的字符串。想一想。