美文网首页前端
Electron建议开发者定义定义内容安全策略

Electron建议开发者定义定义内容安全策略

作者: Lyrieek | 来源:发表于2020-05-29 15:45 被阅读0次

    从2.0版本开始,如果使用electron的开发人员没有定义Content-Security-Policy,Electron就会在DevTool console发出警告

    Electron Security Warning (Insecure Content-Security-Policy) This renderer process has either no Content Security
        Policy set or a policy with "unsafe-eval" enabled. This exposes users of
        this app to unnecessary security risks.
     
    For more information and help, consult
    https://electronjs.org/docs/tutorial/security.
     This warning will not show up
    once the app is packaged.
    

    在electron文档的安全性一章中,列出了17个应当遵循的规则,第六个就是对CSP的要求:https://www.electronjs.org/docs/tutorial/security#6-define-a-content-security-policy

    内容安全策略(CSP) 是一个确保内容安全的控制方式,应对跨站脚本攻击(XSS),数据嗅探攻击(Sniffing)和数据注入攻击(Data injection)的一层保护措施。

    注意,IE8不支持CSP。

    Electron建议任何载入到Electron的站点都要开启,以确保应用程序的安全,两种方法可以启用 CSP:

    • 1.通过HTTP Header的Content-Security-Policy的字段
    Content-Security-Policy: default-src 'self'
    
    • 2.通过HTML的<meta>标签
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'">
    

    两种方式的规则都是一样的,default-src代表默认规则,'self'表示限制所有的外部资源,只允许当前域名加载资源。

    注意:在electron中很多时候虽然没有所谓的域名,页面内容都是集成在一起的,但也可以设置为'self'

    一般情况下,默认规则可以包揽大多数的需求,但凡事都有例外,资源繁多的时候通常需要特殊配置,最值得关心的是script的安全,这至关重要,一旦被注入恶意script,很多安全控制就会荡然无存,可以使用script-src这一指令设置:

    <meta http-equiv="Content-Security-Policy" content="script-src 'self'">
    

    例如我们要引入google-analytics分析流量,可以这样设置:

    <meta http-equiv="Content-Security-Policy" content="script-src 'self' https://www.google-analytics.com">
    

    另外,样式安全以及各种内嵌内容,例如frame-src,child-src有时也需要控制,表单提交也可以单独控制,指令是form-action,设置多个指令需要用;隔开:

    <meta http-equiv="Content-Security-Policy" content="script-src 'self' https://www.google-analytics.com; style-src 'self' https://animate.style">
    

    所有的指令可以在MDN官网找到

    https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy

    如果页面请求的内容都是HTTPS的,可以设置:

    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
    

    相关文章

      网友评论

        本文标题:Electron建议开发者定义定义内容安全策略

        本文链接:https://www.haomeiwen.com/subject/irtfzhtx.html