[英]The symbols I should be aware of for SQL injection
我知道您可以使用mysql_real_escape_string()
(和htmlspecialchars()
)治愈所有问题,但是我想知道导致所有人都想要摆脱的所有混乱的符号吗?
这里的问题是,我们必须在这里将非我们建立的网站从一个主机转移到另一个主机。
它是从头开始编码的,以利用现已弃用且从未有人喜欢过的php
one- magic_quotes
。
主机更改之后, php.ini
也进行了更改,我们遇到了很多意外的结果。 我们没有访问php.ini
权限,没有user.ini
(5.2.x),并且主机的响应速度不足以启用某些额外功能。 拉脱维亚的托管服务有一个主要问题。
但是,是的,这已经是题外话了。 我只是想知道, 哪些符号 没有逃避 ,没有魔术引号和保护就可能导致所有这些混乱 ?
另外,当文本包含类似于/ls
东西(类似于UNIX(主机OS)目录列表命令)-未实现方法时,会出现错误。
而且看起来网站在CLI环境中与数据库交互,因此出现了/ls
问题。 而且,我想确认一下,无论何时输入以/
开头并遵循UNIX命令的值,都会出现“未实现方法”错误。
附注:我不需要解决方案,我已经解决了该错误。 只想知道符号。
1)在撰写问题时,我正在调用CLI
,它看起来像是socket
call- unix-domain
/ TCP
。 活到老,学到老!
2)如果您完整地阅读了问题,您会发现我正在修复其他开发人员留下的错误/漏洞。 确实,我们接管了该客户的IT服务,他们也希望我们接管其网站。
3)因为他们为当前网站支付了很多钱,所以他们不想为更新,更好的构建系统上的新网站支付更多的钱。
4)脚本内部的连接线是- $this->db = DB::connect('mysql://'._DB_USER.':'._DB_PASS.'@'._DB_HOST.'/'._DB_NAME.'');
-我猜是unix-domain
。
从PHP手册 :
mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,该函数将反斜杠添加到以下字符前:\\ x00,\\ n,\\ r,\\,','和\\ x1a。
每个数据库都有其自己的元字符,作为对标准SQL语法的扩展。 有些将使用--
进行注释,有些使用c样式/* */
等,等等...每个DB都有自己的转义要求,这就是为什么PHP中每种DB类型都有转义功能的原因。 对于MySQL有效的方法对于(例如)Oracle可能完全没有用。
唯一的“确定性”字符列表将是SQL标准中列出的字符。 但是仅在您自己的自定义转义函数中使用那些将是无用的,因为它不会包含数据库可以理解的特定于数据库的非标准元字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.