2

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

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

除了这个,我还能用什么来防止恶意管理员注入一些讨厌的东西?

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

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

4

5 回答 5

2

htmlentities()htmlspecialchars()在您输出数据时使用。编码和转义是不同的。

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

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

于 2011-04-27T05:34:35.853 回答
0

你应该使用htmlentities().

于 2011-04-27T05:35:09.277 回答
0

您正在寻找的术语是Cross Site ScriptingXSS简称。搜索它应该会为您提供大量资源,例如StackOverflow 上的这个问题

于 2011-04-27T05:39:22.387 回答
0

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

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

正如 JohnP 所说,strip_tags()可以很方便,因为第二个参数允许您明确允许某些无害的标签(如 or ),同时剥离其他任何标签(如 or )

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

于 2011-04-27T05:54:53.783 回答
-1

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

于 2011-04-27T07:46:04.300 回答