我的服务器管理员最近升级到 PHP 5.3,我遇到了一个奇怪的“错误”(或功能,因为 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 会有点自动。:)
编辑:实际上,我需要禁用它。有时我会收集表单数据并将其重新发送到客户端表单以防出现问题(即缺少字段),因此我不希望他/她突然出现斜线。