繁体   English   中英

禁止页面上的内联脚本

[英]Prohibit inline script on page

是否可以通过在服务器上指定一些HTTP标头,策略或类似方法来禁止浏览器对某些页面执行内联脚本(代码直接放置在页面上,而不放置在外部资源中,即事件处理程序,脚本块等)? 我正在寻找一些通用的解决方案:跨浏览器和HTTP服务器不可知。

基本上,这就是所谓的XSS过滤,一个简单的答案是防止输入,或者根本不进行渲染 有很多方法可以做到这一点,库也可以根据平台提供帮助。

在入口点,您应该对其进行过滤。 来自客户的提交应始终进行过滤。 这称为XSS过滤。

在呈现方面,如果要将特殊字符(尤其是来自用户输入的特殊字符)转义到页面中,则应该执行类似html_entities的操作。

所有这些都在服务器上完成。

经过大量的搜索和与大学的讨论,我终于找到了解决方案- 内容安全策略 (描述概念的好文章- “内容安全策略简介”由Mike West撰写)。 目前,它在W3C中处于候选推荐阶段,但是最受欢迎的浏览器已经支持它(不幸的是,在IE版本<10中支持)。

它正是我想要的:

  • 这是一个响应HTTP标头,因此与服务器无关
  • (或多或少...)跨浏览器
  • 它可以禁止浏览器执行内联脚本(使用指令unsafe-inline )或eval( unsafe-eval ; eval是邪恶的),并引入许多有用的限制(从浏览器安全的角度出发)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM