2

我编写了一个不错的管理界面,包括库存管理、内容管理和博客。现在是时候将其锁定并确保其安全(是的,我应该从一开始就这样做......

对于博客创建/编辑,我使用 ckeditor 将 HTML 输出发布到 editblog.php。我也在使用简单的文本输入标题、作者等......

我很担心,因为博客会有 img src="uploads/etc.jpg",以及 div、spans 等...

所以!当我清理这些数据时,我如何确保所有这些引号和斜杠都可以安全地推入我的 SQL 数据库中,我该怎么做才能将其吐回前端?我也很担心,因为如果博主“引用”了某些东西,我也不希望它被弄乱。

简单的输入,如标题、作者等 我正在使用 $title = mysqli_real_escape_string($title) 但这足够了吗?如何在避免攻击的同时保留用户的预期输入?

我已经完成了我的研究,但我仍然不明白。我希望有人能为我把它分解得又好又简单......

4

1 回答 1

1

又好又简单...

您总是针对要写入的上下文进行清理。

这些技术将保留用户的输入,但防止该输入被解释为特定上下文中的代码。

当您要查询数据库时,您担心SQL注入攻击:

  • 使用 mysql_real_escape_string 为数据库查询清理 SQL。

当您想要显示将由浏览器解析的内容(如 HTML)时,您会担心跨站点脚本:

  • 使用 htmlspecialchars 清理 HTML 输出。

这将提供基本的安全级别。

  • 为了提高数据库端的安全性,您应该查看准备好的语句和 PHP PDO
  • 有关 htmlspecialchars 的一些陷阱的更多信息,请查看@Cheekysoft 的出色解释:htmlspecialchars 和 mysql_real_escape_string
于 2012-11-07T23:15:25.760 回答