如何使用 PHP 在普通 HTML 中检测 Javascript 的存在?

How to detect presence of Javascript in plain HTML using PHP?

我有纯 HTML 代码,其中没有 Javascript 代码。

您如何检测是否在 HTML 中注入了任何形式的 Javascript?

应用程序生成 HTML 客户端。并且需要在它到达服务器后对其进行验证。

目标不是删除 Javascript,而只是检测它的存在。

删除比检测更容易 - 只需转义 htmlspecialchars($string).

得到的所有 HTML 等

好吧,这是一个非常有趣的挑战: 首先,检查所有脚本标签,大写和小写

<SCRIPT> <script> <sCrIPt>

然后,检查事件处理程序(onclick 等)。

为此,我们使用 DOM

$dom = new DOMDocument;
$dom->loadHTML($string);

您可以使用 DOM 施展各种魔法,我建议您阅读他们的文档。检查其中是否包含 "on" 的任何属性

这就是像 HTML Purifier 这样的工具的用途。他们将输入分解为令牌 运行 他们反对白名单。

这比试图找到将脚本插入 HTML 的特定方法更安全,因为存在使用格式错误的标签或不明显属性的技巧。例如,参见 XSS Evasion Cheat Sheet