SQL注入我应该注意的符号

时间:2011-09-22 18:37:04

标签: php mysql shared-hosting

我知道你用mysql_real_escape_string()(以及htmlspecialchars())来治愈所有这些东西,但我想知道导致所有这些混乱的符号,每个人都想摆脱?

这里的问题是,我们必须将一个非我们建造的网站从一个主机转移到另一个主机。

它是从头开始编码的,现在已经弃用了php,而且从未爱过magic_quotes

主机更改后也发生了php.ini更改,我们遇到了很多意外结果。我们无法访问php.ini,没有user.ini(5.2.x),主机响应不足以启用我们的一些额外功能。拉脱维亚的托管服务存在一个主要问题。

但是,那已经不在话题了。我只是想知道,哪些符号是那些没有逃避,没有魔法引号和没有保护可以导致所有这些混乱?< / p>

另外,当文本包含像/ls这类似UNIX(主机操作系统)目录列表命令的东西时,会出现错误 - 方法未实现。

看起来网站在CLI环境中与数据库交互,因此/ls问题。我想确认无论何时输入以/开头并且遵循UNIX命令的值 - “方法未实现”错误都会出现。

P.S。我正在寻找解决方案,我已经修复了错误。只是想知道符号。

更新以澄清

1)在撰写问题时,我正在呼叫CLI看似socket的电话 - unix-domain / TCP。生活和学习!

2)如果你完整地阅读了这个问题,你会发现我正在修复其他开发人员留下的漏洞/漏洞。我们接管了这些客户的IT服务,他们希望我们也接管他们的网站。

3)因为他们为当前的网站支付了很多钱,所以他们不希望在更新,更好的系统上支付更多的费用。

4)脚本中的连接线是 - $this->db = DB::connect('mysql://'._DB_USER.':'._DB_PASS.'@'._DB_HOST.'/'._DB_NAME.''); - unix-domain我猜。

2 个答案:

答案 0 :(得分:3)

来自PHP Manual

  

mysql_real_escape_string()调用MySQL的库函数   mysql_real_escape_string,它将反斜杠添加到以下内容   字符:\ x00,\ n,\ r,\,',“和\ x1a。

答案 1 :(得分:2)

每个数据库都有自己的元字符作为标准SQL语法的扩展。有些人会使用--来评论,有些人会使用c-style /* */等等...每个数据库都有自己的转义要求,这就是为什么PHP中的每个数据库类型都有一个转义函数。适用于MySQL的东西对于(比如说)Oracle来说可能完全没用。

唯一的“权威”字符列表将是SQL标准中列出的字符。但是只使用自己的自定义转义函数中的那些将是无用的,因为它不包括数据库理解的特定于DB的非标准元字符。