PHP逃脱字符串疯狂

时间:2012-10-21 23:01:31

标签: php mysql mysql-real-escape-string

PHP手册和用户反馈让我感到困惑。我正在尝试修复别人的代码,他将所有表单数据转换为ASCII代码并返回。

这是以逃避一切的粗略方式完成的,但很难维护,数据库看起来像一堆逗号分隔的数字而不是可查询的数据库。肯定有一种确定的方式在PHP中存储一个表单值并在没有这么多扭曲的情况下检索它。各种escapeunescape函数似乎无法逃避一切。

您还需要检查并设置此项,但请确保未设置其他内容。是什么赋予了?简单地说,表单字段中的任何内容都必须可靠地写入MySQL列,并且很容易检索回PHP并在mysql中查询。表单位于Intranet上,数据可能包含所有正常的键盘输入,包括美元符号,百分号,斜杠和撇号。

1 个答案:

答案 0 :(得分:2)

  1. 如果您使用的是PHP的过时版本:升级PHP或转移到具有较新PHP的更好主机。失败:在PHP设置中禁用魔术引号。也失败了:detect and undo magic quotes。魔术引用是一个可怕的想法,已从PHP中删除。
  2. 将数据插入数据库时​​,请使用prepared statements and parameterized queries
  3. 将数据插入HTML时,escape special characters(确保为您的属性值所包含的引号类型正确设置引号选项,默认值仅对value="<?php echo ... ?>"是安全的,如果您是改为使用')。有关更复杂的方案,请参阅the OWASP XSS (Cross Site Scripting) Prevention Cheat Sheet