3

我目前正在努力确保为我正在处理的 web 应用程序提交到数据库中的文本在提交到数据库之前被正确清理,然后正确检索和显示。

忽略当前正在使用的杂乱无章的清理功能(它目前是一团糟并且破坏了东西),这就是我打算做的事情:

  1. 使用 CKEditor 进行文本输入。它会自动将 HTML 标记/符号转换为它们的 HTML 实体。

  2. 利用 PDO 准备语句将文本提交到数据库。

这足以正确清理输入吗?我一直在阅读这方面的内容,很多人说要使用魔术引号,但是我读到魔术引号很旧并且大多数人建议不要使用它。

提前感谢您的任何帮助!

4

2 回答 2

2

不要使用魔术引号。http://php.net/manual/en/security.magicquotes.php

此功能自 PHP 5.3.0 起已弃用,自 PHP 5.4.0 起已移除。

如果您使用的是准备好的语句,那么您应该可以避免 sql 注入。htmlspecialchars()记得在前端显示时运行用户输入的数据。

于 2013-02-19T21:02:28.220 回答
2

好吧,PDO 仅适用于初学者手册中的基本案例。
任何复杂的问题都会给 PDO 以及任何其他 API 带来麻烦。

但是,只要您准备好浪费时间编写大量插入语句,在所有这些答案之后重复每个变量六到十次 - PDO 就可以了。

但只是让您知道,没有针对标识符的准备好的声明。

至于 CKEditor - 它不是客户端应用程序吗?如果是这样,它不会保护任何东西。
因此,最好遵循另一个答案的建议 - 在 HTML 页面上显示时通过 htmlspecialchars() 传递不受信任的用户输入

于 2013-02-19T21:10:44.837 回答