困惑于htmlspecialchars,real_escape_string等

时间:2012-11-07 22:44:51

标签: php mysql security

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

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

我很担心因为博客会有img src =“uploads / etc.jpg”,以及div,span等...

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

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

我已经完成了我的研究,但我仍然没有得到它。我希望有人可以为我分解它简单明了...

1 个答案:

答案 0 :(得分:1)

美好而简单......

您始终要清理要编写的上下文。

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

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

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

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

  • 使用htmlspecialchars清理HTML输出。

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

  • 为了提高数据库方面的安全性,您应该查看预准备语句和PHP PDO
  • 有关htmlspecialchars的一些陷阱的更多信息,请查看@ Cheekysoft的优秀解释:htmlspecialchars and mysql_real_escape_string