【发布时间】:2011-07-10 18:09:11
【问题描述】:
我的服务器管理员最近升级到 PHP 5.3,我遇到了一个奇怪的“错误”(或 feature,就像 PHP 人所说的那样)。出于明显的安全原因,我的大部分字符串表单数据周围都有mysql_real_escape_string,但现在看来这种转义已经由 PHP 完成了。
<?php
echo $_GET["escaped"];
?>
<form method="get">
<input type="text" name="escaped" />
</form>
如果我输入例如escape 'this test'、escape \'this test\',则此输出。如果我使用 POST 而不是 GET,也是如此。
它是直接与 5.3 升级相关,还是我的管理员在 php.ini 文件中触发了一些自动切换?
另外,我应该保持原样(如果它确实是一个很好的防故障机制,可以正确捕获所有 get 和 post 变量),还是应该禁用它(如果可能的话!)然后返回到mysql_real_escape_string?我的直觉告诉我方法 2 是最好的,但方法 1 会有点自动。 :)
编辑:实际上,我需要禁用它。有时我会收集表单数据并将其重新发送到客户端表单以防出现问题(即缺少字段),因此我不希望他/她突然出现斜线。
【问题讨论】:
-
另外需要注意的是,如果你的
php.ini文件包含语法错误,默认是启用magic_quotes_gpc。因此,如果您认为您在配置文件中禁用了magic_quotes_gpc,则该文件可能包含阻止应用您的配置的错误。个人经验。 :P
标签: php forms escaping magic-quotes