繁体   English   中英

对于SQL注入我应该知道的符号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM