选择框选项(Chrome)中的转义脚本标记

时间:2015-06-05 01:55:11

标签: javascript jquery css css3

我有一个包含下拉列表的HTML页面。

<html>
    <body>
        <select>
            <option >1</option>
            <option >2</option>
            <option >3</option>
            <option >&lt;script&gt;alert('XSS')&lt;/script&gt;</option>
        </select>
    </body>
</html>

在Chrome中,选择框无法打开。

当我在FireFox中打开它时,下拉列表会打开,但在Chrome中则不会 小提琴链接:http://jsfiddle.net/nghiadthp/3mpmkfr8/

1 个答案:

答案 0 :(得分:1)

Chrome可以通过在Chrome(图标)&gt;中设置此标记来关闭Chrome功能。属性目标路径:

...ome.exe" --disable-web-security

尽管如此,您正在尝试遭受此商品的

https://developer.chrome.com/extensions/contentSecurityPolicy

  

CSP Level 2通过允许您使用加密随机数(使用一次的数字)或散列

将特定的内联脚本列入白名单,为内联脚本提供向后兼容性

所以你可能想要创建一个带有"unsafe-inline"属性的.json manifest,该属性具有在SHA256中转换的完全(未转义)script

<script>alert('XSS')</script> // >> convert it to SHA256
  

Content-Security-Policy:script-src&#39; sha256-sha256-41f152968d8d75de3055b59b194f3a5a993b65b06c1586d7dda9d73be115271d&#39;

或使用nonce属性:

&lt;script nonce=a3afdc68d2731d5187f58e833610c951&gt;alert('XSS')&lt;/script&gt;

必须与您的清单&s-script-src匹配:

  

内容 - 安全 - 政策:script-src&#39; nonce-a3afdc68d2731d5187f58e833610c951&#39;

https://developer.chrome.com/extensions/contentSecurityPolicy
https://developer.chrome.com/extensions/manifest
https://w3c.github.io/webappsec/specs/content-security-policy/
http://www.html5rocks.com/en/tutorials/security/content-security-policy/

因此Chrome不允许您按照您的预期执行内联script
(使用&lt;span&gt;进行测试,它会正常工作!) 没有确切地知道你正在做的疯狂 顺便说一句,没有元素被允许进入option标签,转义与否,因此Chrome非常聪明。特别关于XSS预防。