Html 不同类型的脚本标记会被解释为JS吗?

Html 不同类型的脚本标记会被解释为JS吗?,html,security,xss,Html,Security,Xss,这更多的是关于安全性而不是编程,但无论如何,我会把它贴在这里 标记解析器将数学块呈现为: <script type="math/tex"> % tex code here </script> %这里是特克斯码 然后,客户端库(aka MathJax)检测这些标记并将它们转换为数学 我的问题是:在清理HTML时,允许标记可以吗? 浏览器是否有可能将这样的标记交互为JavaScript(启用XSS)?这应该是安全的。这取决于您如何允许这些标记通过HTML编码其

这更多的是关于安全性而不是编程,但无论如何,我会把它贴在这里

标记解析器将数学块呈现为:

<script type="math/tex">

   % tex code here

</script>

%这里是特克斯码
然后,客户端库(aka MathJax)检测这些
标记并将它们转换为数学

我的问题是:在清理HTML时,允许
标记可以吗?

浏览器是否有可能将这样的标记交互为JavaScript(启用XSS)?

这应该是安全的。这取决于您如何允许这些标记通过HTML编码其他内容

还要注意脚本标记中任何用户控制的内容

e、 g.如果用户可以在此处将
%tex code
设置为

</script>
<script>
alert('xssed')

警报('xssed')
然后将呈现以下内容:

<script type="math/tex">

   </script>
   <script>
   alert('xssed')

</script>

警报('xssed')

然后将执行JavaScript。

是。不。如果脚本标记没有类型,或者类型是JavaScript,则浏览器将只解析脚本标记,
text/JavaScript
application/JavaScript
。为了安全起见,我不会使用任何以
/javascript
结尾的东西,但您可以使用
数学/tex
/ecmascript
math/tex
还可以。但要小心清理HTML——如果处理不当,这可能是一个雷区。通常你会对字符进行编码,这意味着
将被编码为
script type=“math/tex”
,所以我的问题是,你是如何清理HTML的?我会跳过任何未能通过测试的标记,所以是的,
如果我不允许的话,将变成
script type=“math/tex”
。保留标签(及其内容)安全吗?澄清:这些标签不能转义,否则MathJax不会检测到它们。但是,我不知道我是否会通过使它们不被替换而引入安全风险。用户可以在此处将
%tex code
设置为他想要的任何内容,只要它不包含任何字符串