php - 防止 PHP Web 应用程序中的 JavaScript 注入(inject)

标签 php javascript javascript-injection

需要采取哪些措施来防止或阻止 JavaScript 注入(inject)发生在 PHP Web 应用程序中,以免泄露敏感信息(PHP、HTML/XHTML 和 JavaScript 中的最佳实践)?

最佳答案

好的第一步是应用 question Gert G linked 中列出的方法.这详细介绍了可在不同情况下用于清理输入的各种函数,包括 mysql_real_escape_stringhtmlentities()htmlspecialchars() , strip_tags()addslashes()

尽可能避免将用户输入直接插入数据库是一种更好的方法。雇用whitelist input validation :在您只有有限范围的选项的任何情况下,从用于插入的硬编码值中进行选择,而不是从任何面向客户端的表单中获取输入。基本上,这意味着只有您接受的某些值,而不是试图消除/对抗邪恶/格式错误/恶意输入。

例如: 如果您有一个带有项目下拉列表的表单,请不要使用此下拉列表中的输入进行插入。请记住,恶意客户端可以编辑随表单提交发送的信息,即使您认为他们只有有限的选项。相反,让下拉列表引用服务器端代码中数组中的索引。然后使用该数组选择要插入的内容。这样,即使攻击者试图向您发送恶意代码,它也永远不会真正攻击您的数据库。

显然,这不适用于论坛或博客等自由形式的应用程序。对于那些,您必须依靠“第一步”技术。尽管如此,仍有许多选项可以通过白名单输入验证进行改进。

您还可以使用 parameterized queries (又名带有绑定(bind)变量的准备好的语句)尽可能为您的 sql 交互。这将告诉您的数据库服务器所有输入都只是一个值,因此它可以减轻注入(inject)攻击带来的许多潜在问题。在许多情况下,这甚至可以涵盖自由格式的应用程序。

关于php - 防止 PHP Web 应用程序中的 JavaScript 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3295291/

相关文章:

javascript - 使用 i18next(占位符、值)翻译自定义属性

javascript - 如何在 javascript 中以正确的顺序连接波斯字符和英文字符?

javascript - 为什么字符串中包含 `<script>` 会导致 JS 语法错误?

javascript - 企图利用?

php - codeigniter jquery 动态数据

php - 统计与表中数据相同的单词数据

php - FPDF 和 While 循环

javascript - 如何获取某个页面的 Facebook 帖子及其评论?

javascript - 为什么 slideToggle 在这里不起作用?

asp-classic - 通过 URL 进行跨站脚本编写