elm 中的 XSS 攻击拦截有多严重?

问题描述

我知道 elm 编译器会阻止您在 HTML 文档中放置 <script> 标签。相反,它会将它们切换到 <p>s:

node
     "script"
     [ id "MathJax-script",type_ "text/javascript",src "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"
     ]
     []

我设法解决了这个问题。编译的 elm 代码(在我的例子中存储在一个 js 文件中),包含一些特殊的代码

// XSS ATTACK VECTOR CHECKS


function _VirtualDom_noScript(tag)
{
    return tag == 'script' ? 'p' : tag;
}

'script' 字符串可以替换为 'scrip',并且您可以使用 <script> 标签

经过一番研究,我发现这可以阻止 XSS 攻击。这种担忧有多严重?我应该使用这个技巧来插入 <script> 标签吗?

解决方法

你应该问自己的一件事是为什么你想要这样做?如果您需要插入脚本,从 Elm 外部执行此操作通常是更可靠的选择(例如,这允许浏览器在您的 Elm 应用程序有机会加载/初始化之前开始加载该资源)。

话虽如此,您应该担心的主要原因是您无法控制的代码。好消息是 Elm 使得对您的代码执行供应链攻击变得非常困难。如果您削弱这些保护措施,您可能会使自己容易受到这些保护。但是,有人不加选择地尝试这种攻击是不太可能的,因为它通常不会对任何试图这样做的人起作用。

(如果您担心成为特定目标,那么您可能不应该考虑削弱任何安全功能)。