为管理员清理表单输入

时间:2011-04-27 05:31:44

标签: php input-sanitization

在我网站的管理区域中,我在检索进入数据库的表单输入时一直使用mysqli_real_escape_string。它工作正常但我意识到它不会阻止脚本注入。我的意思是我可以通过以下脚本:

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

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

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

在输入数据不需要html的后端表单中清理表单输入的正确方法是什么?我很困惑?

5 个答案:

答案 0 :(得分:2)

输出数据时会使用

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

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

此外,您可以考虑切换到MySQL PDO。这是运行查询的更首选和安全的方式。

答案 1 :(得分:0)

您应该使用htmlentities()

答案 2 :(得分:0)

您要查找的字词为Cross Site ScriptingXSS。搜索它应该为您提供大量资源,例如StackOverflow上的this question

答案 3 :(得分:0)

正确答案在很大程度上取决于您的申请。

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

正如JohnP所说,strip_tags()可以很方便,因为第二个参数允许你明确地允许某些无害的标签(比如或),同时剥去其他任何东西(比如或)

如果您需要更多的复杂性,您需要进行更仔细的分析,并根据您的需求提供量身定制的解决方案。 (提示:如果该解决方案涉及使用正则表达式来匹配HTML标记,则可能需要退一步)

答案 4 :(得分:-1)

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