我知道你用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
我猜。
答案 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的非标准元字符。