IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    分享几个安全相关的http header头

    杜工发表于 2020-11-10 05:21:24
    love 0

    HttpOnly

    如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。XSS全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。

    设置cookie为HttpOnly方式如下:

    cookie.setHttpOnly(true);
    
    

    X-Frame-Options 

    X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame>, <iframe> 或者 <object> 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。

    使用 X-Frame-Options

    X-Frame-Options 有三个值:

    • DENY 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
    • SAMEORIGIN 表示该页面可以在相同域名页面的 frame 中展示。
    • ALLOW-FROM uri 表示该页面可以在指定来源的 frame 中展示。

    换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。

    配置 Apache

    配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 ‘site’ 的配置中:

    Header always append X-Frame-Options SAMEORIGIN
    

    配置 nginx

    配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 ‘http’, ‘server’ 或者 ‘location’ 的配置中:

    add_header X-Frame-Options SAMEORIGIN;
    

    配置 IIS

    配置 IIS 发送 X-Frame-Options 响应头,添加下面的配置到 Web.config 文件中:

    <system.webServer>
      ...
    
      <httpProtocol>
        <customHeaders>
          <add name="X-Frame-Options" value="SAMEORIGIN" />
        </customHeaders>
      </httpProtocol>
    
      ...
    </system.webServer>
    
    

    X-XSS-Protection

    HTTP X-XSS-Protection 响应头是Internet Explorer,Chrome和Safari的一个功能,当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面。虽然这些保护在现代浏览器中基本上是不必要的,当网站实施一个强大的Content-Security-Policy来禁用内联的JavaScript (‘unsafe-inline‘)时, 他们仍然可以为尚不支持 CSP 的旧版浏览器的用户提供保护。

    范例

    当检测到XSS攻击时阻止页面加载:

    X-XSS-Protection: 1;mode=block
    

    PHP

    header("X-XSS-Protection: 1; mode=block");
    

    Apache (.htaccess)

    <IfModule mod_headers.c>
      Header set X-XSS-Protection "1; mode=block"
    </IfModule>
    
    
    
    

    Content Security Policy(CSP)

    Content Security Policy(CSP)是一个HTTP的header

    作用是允许站点来声明定义对web资源的限制(JavaScript,CSS,表单提交,etc)

    加固建议

    建议仿照Github的简单CSP策略来制定自己站点的策略

    以GitHub最初的CSP策略为例:

    CONTENT-SECURITY-POLICY:
      default-src *;
      script-src 'self' assets-cdn.github.com jobs.github.com ssl.google-analytics.com secure.gaug.es;
      style-src 'self' assets-cdn.github.com 'unsafe-inline';
      object-src 'self' assets-cdn.github.com;
    

    或者制定一个更加完善复杂的CSP策略

    再举例现在的Github CSP policy:

    CONTENT-SECURITY-POLICY:
      default-src 'none';
      base-uri 'self';
      block-all-mixed-content;
      child-src render.githubusercontent.com;
      connect-src 'self' uploads.github.com status.github.com api.github.com www.google-analytics.com wss://live.github.com;
      font-src assets-cdn.github.com;
      form-action 'self' github.com gist.github.com;
      frame-ancestors 'none';
      frame-src render.githubusercontent.com;
      img-src 'self' data: assets-cdn.github.com identicons.github.com www.google-analytics.com collector.githubapp.com *.gravatar.com *.wp.com *.githubusercontent.com;
      media-src 'none';
      object-src assets-cdn.github.com;
      plugin-types application/x-shockwave-flash;
      script-src assets-cdn.github.com;
      style-src 'unsafe-inline' assets-cdn.github.com


沪ICP备19023445号-2号
友情链接