0

我已经阅读了这里关于逃避的每一篇文章,不幸的是,几乎每个人在海报之间都有分歧,所以我只想在我犯下重大错误之前向社区询问我的具体情况,因为我误解了另一篇文章。

我将用户首选项存储在 MySQL 数据库中,我亲自将信息直接放入数据库中,而不是用户提交的输入。

我的问题是:

1.) 如果我正在运行 PHP 查询并将查询结果放入其他 PHP 代码块中,而不是作为 HTML,而是像其他查询一样,即 (SELECT * from $queryresult) 是否不需要转义这个正确的?

2.)如果我直接从数据库将我存储在数据库中的内容作为 html 输出,我是否需要无论如何都要清理这个输出。我的理解是,严格针对用户提交的输入进行清理。需要我真的担心来自我个人填充的数据库字段的数据。

我想我在阅读后知道这里的答案,但我不想在这个问题上留下任何错误的余地。

4

1 回答 1

3

问题 1 - 为 MySQL 查询转义数据

不,无论来源如何,您都必须始终在查询中转义数据。数据转义用于查询解析器。即使数据来自您自己的代码,您也必须对其进行转义。

学习使用 PDO来避免这个问题。

问题 2 - 为 HTML 转义数据

如果要将数据输出到 HTML,则必须始终htmlspecialchars()使用或等效转义它。这样您就不必担心糟糕的 HTML 代码以及 XSS。

于 2012-04-11T14:55:01.413 回答