为管理员消毒表单输入


Sanitizing Form Input for administrators

在我的网站管理区域,当检索进入数据库的表单输入时,我一直在使用mysqli_real_escape_string。它工作得很好,但我意识到它并不能阻止脚本注入。我的意思是,我可以通过这样的脚本:

<script>alert('hello');</script>

除此之外,我还使用什么来防止恶意管理员注入一些讨厌的东西?

  • htmlentities()
  • strip_tags()
  • htmlspecialchars()

在输入数据不需要html的后端表单中,对表单输入进行净化的正确方法是什么?我很困惑?

输出数据时使用

htmlentities()htmlspecialchars()。编码和转义是不同的。

如果你不想要HTML,我的建议是使用strip_tags()清除它的任何HTML标记,并在输出内容时使用html*

此外,您可能会考虑切换到MySQL PDO。这是运行查询的一种更可取、更安全的方式。

您要查找的术语简称为Cross Site ScriptingXSS。搜索它应该会给你很多资源,比如StackOverflow上的这个问题。

正确的答案在很大程度上取决于您的应用程序。

许多管理系统需要管理员操作HTML的方法。但是有些HTML比其他HTML更危险。

正如JohnP所说,strip_tags((非常方便,因为第二个参数允许您显式地允许某些无害的标签(如或(,同时剥离任何其他标签(如(

如果你需要比这更复杂的东西,你需要做一个更仔细的分析,并提出一个适合你需求的解决方案。(提示:如果该解决方案涉及使用正则表达式来匹配HTML标记,您可能需要后退一步(

您应该使用htmlentities()

如果使用的是php 4或更低版本的php 5.2或更低版本,则可以使用magic_quotes函数进行消毒。