1

我觉得很奇怪,我在这方面找不到任何东西,但事实就是如此。

在我的网站上,我允许用户输入要存储在我的数据库中的文本。我使用 PDO 来保证它的安全,但是所有危险字符前面都有“\”。

有没有一种简单的方法可以摆脱这一切?我应该在 MySQL 中使用不同的数据类型吗?

提前致谢!

没有双重逃避。懒惰阻止了它

我读到只做直接 PDO 就可以了,所以你不必担心逃逸、消毒、漂白、擦洗等……

我像这样执行标准 PDO INSERT如何插入 PDO (sqllite3)?

数据由 jQuery ajax 传输。这是问题的根源吗?如果是这样,我该如何扭转它?

谢谢你的帮助!

具体问题

我只有在引号和双引号前有“\”。谢谢!

版本

用于 Zend Guard 兼容性的 PHP 5.3。MySQL 5.5。阿帕奇 2.2.2。jQuery 1.8.3

+1 反转

我将给出尽可能多的 +1 作为关于如何反转这些 / 的答案。谢谢!

魔术行情

是答案。有人想延长他们的答案以进行检查吗?

仍在寻找 SQL 语句来反转先前的转义。谢谢!

4

2 回答 2

4

这可能是由于magic quotes在服务器上启用了。特别是,它可能是magic_quotes_gpc指令,可以在 , 等中设置php.ini.htaccess但不能在运行时使用ini_set.

首先,仔细检查输出phpinfo()以确保这是问题所在。如果您发现启用了魔术引号,则需要有权访问服务器的人在您的php.inior.htaccess文件中禁用它。php手册在这里解释了这个过程:http ://www.php.net/manual/en/security.magicquotes.disabling.php

但是请注意这一点:如果服务器上运行的代码依赖于魔术引号,禁用它可能会使这些站点容易受到 sql 注入等攻击。

于 2012-12-17T16:15:42.607 回答
0

在应用程序到达 PDO 层之前,您显然已经在应用程序中进行了其他一些转义。查找addslashesescape_string键入方法调用以查看您是否进行了该操作。

您所看到的是双重转义的迹象。

于 2012-11-16T00:22:37.367 回答