# 设置 HTTP HEADER 字段来提高 Web 安全性

- Link: https://www.xuepaijie.com/html/skill/devops/817.html
- Published: 2017-02-19T11:55:57+08:00
- Author: Admin

**X-Frame-Options**

该响应头中用于控制是否在浏览器中显示 frame 或 iframe 中指定的页面，主要用来防止 
Clickjacking （点击劫持）攻击。

    ```html;
    X-Frame-Options: SAMEORIGIN
    DENY 禁止显示 frame 内的页面（即使是同一网站内的页面）
    SAMEORIGIN
    允许在 frame 内显示来自同一网站的页面，禁止显示来自其他网站的页面
    ALLOW-FROM origin_uri 允许在 frame 内显示来自指定 uri 的页面（当允许显示来自于指定网站的页面时使用）
    ```

**X-Content-Type-Options**

如果从 script 或 stylesheet 读入的文件的 MIME 类型与指定 MIME 类型不匹配，不允许
读取该文件。用于防止 XSS 等跨站脚本攻击。

    ```html;
    X-Frame-Options: nosniff
    ```

** X-XSS-Protection**

用于启用浏览器的 XSS 过滤功能，以防止 XSS 跨站脚本攻击。

    ```html;
    X-XSS-Protection: 1; mode=block
    0 禁用 XSS 过滤功能
    1 启用 XSS 过滤功能
    ```

** Content-Security-Policy**

用于控制当外部资源不可信赖时不被读取。用于防止 XSS 跨站脚本攻击或数据注入攻击（但是，
如果设定不当，则网站中的部分脚本代码有可能失效)。

之前的字段名为 X-Content-Security-Policy

    ```html;
    Content-Security-Policy: default-src 'self'
    default-src ‘self’：允许读取来自于同源（域名+主机+端口号）的所有内容
    default-src ‘self’
    *.example.com：允许读取来自于指定域名及其所有子域名的所有内容
    ```

**X-Permitted-Cross-Domain-Policies**

用于指定当不能将”crossdomain.xml”文件（当需要从别的域名中的某个文件中读取 Flash 
内容时用于进行必要设置的策略文件）放置在网站根目录等场合时采取的替代策略。

    ```html;
    X-Permitted-Cross-Domain-Policies: master-only
    master-only 只允许使用主策略文件（/crossdomain.xml）
    ```

** Strict-Transport-Security**

用于通知浏览器只能使用 HTTPS 协议访问网站。用于将 HTTP 网站重定向到 HTTPS 网站。

    ```html;
    Strict-Transport-Security: max-age=31536; includeSubDomains
    max-age 用于修改 STS 的默认有效时间。
    includeSubDomains 用于指定所有子域名同样使用该策略。
    ```

** Access-Control-Allow-Origin等CORS相关字段**

当使用 XMLHttpRequest 从其他域名中获取资源进行跨域通信时使用。

    ```html;
    Access-Control-Allow-Origin: http://www.example.com
    Access-Control-Allow-Methods: POST, GET, OPTIONS
    Access-Control-Allow-Headers: X-CODE
    Access-Control-Max-Age: 1728
    ```

上述代码用于设定与”http://www.example.com“进行跨域通信处理，允许使用 POST, GET, 
OPTIONS 方法，在发送的请求头中添加 X-CODE 字段，通信超时时间为1,728,00秒。
