php - 转义 php MySQL 内容的策略

标签 php mysql escaping

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

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

我的问题是:

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

2.) 如果我直接从数据库将存储在数据库中的内容作为 html 输出,我是否需要以任何方式清理此输出。我的理解是,清理严格针对用户提交的输入。我真的需要担心来 self 个人填充的数据库字段的数据吗?

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

最佳答案

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

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

Learn to use PDO以避免这个问题。

问题 2 - 转义 HTML 数据

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

关于php - 转义 php MySQL 内容的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108455/

相关文章:

来自数据库的 PHP 权限级别

bash - 正确转义 sed 字符串

python - PyMySQL 变量在一个数据库中使用 GRANT ALL PRIVILEGES

php - 单元测试 Smarty 模板

php - 读取冒号标签值 XML PHP

php - 从文本文件中选择 6 个以上 10 个字符以下的随机字符串

php - 如何更改列表的顺序?

html - 使用 html 打印 "<html>"

erlang - 为什么io :format support ~n when\n does the same thing?

php - Laravel Eloquent 查询 'with'