-1

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

这是一种逃避一切的粗略方式,但很难维护,并且数据库看起来像一堆逗号分隔的数字,而不是可查询的数据库。在 php 中肯定有一种可靠的方式来存储表单值并在没有太多扭曲的情况下检索它。各种escapeunescape功能似乎并没有逃脱一切。

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

4

1 回答 1

2
  1. 如果您使用的是过时版本的 PHP:升级 PHP 或迁移到具有更新 PHP 的更好的主机。做不到这一点:在你的 PHP 设置中禁用魔术引号。做不到这一点:检测和撤消魔术引号。魔术引号是一个糟糕的主意,已从 PHP 中删除。
  2. 将数据插入数据库时​​,使用准备好的语句和参数化查询
  3. 将数据插入 HTML 时,转义特殊字符(确保正确设置了引号选项,以正确设置您在属性值周围的引号类型,默认值仅适用于value="<?php echo ... ?>"而不是在您使用时才安全')。对于更复杂的场景,请参阅OWASP XSS(跨站点脚本)预防备忘单
于 2012-10-21T23:04:36.067 回答