我有一个HTML页面,其中包含一个dropdownlist。

<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/

最佳答案

Chrome具有一项功能,可以通过在Chrome(图标)>属性目标路径中设置此标志来关闭此功能:

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


尽管如此,您要尝试的将受此物品的影响:

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


  CSP 2级通过允许您使用加密随机数(使用一次的数字)或哈希将特定的内联脚本列入白名单,从而为内联脚本提供了向后兼容性。


因此,您可能想创建一个具有"unsafe-inline"属性的.json manifest,该属性具有在SHA256中转换的准确(未转义)的script

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



  内容安全性政策:script-src'sha256-sha256-41f152968d8d75de3055b59b194f3a5a993b65b06c1586d7dda9d73be115271d'




或使用nonce属性:

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


必须与清单的script-src相匹配:


  内容安全政策:script-src'nonce-a3afdc68d2731d5187f58e833610c951'


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预防。

07-25 21:54
查看更多