lighttpd http响应报文(Response)增加安全头Referrer-Policy和X-Permitted-Cross-Domain-Policies方法

Posted wellnw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lighttpd http响应报文(Response)增加安全头Referrer-Policy和X-Permitted-Cross-Domain-Policies方法相关的知识,希望对你有一定的参考价值。

X-Permitted-Cross-Domain-Policies和Referrer-Policy说明

X-Permitted-Cross-Domain-Policies

       X-Permitted-Cross-Domain-Policies 浏览器提供了许多可选的安全相关功能与特性,这些功能与特性通常可以通过 HTTP 响应头来控制,使用这些功能,可以避免受到浏览器端的用户受到类似CSRF、XSS、Click Hijacking 等前端黑客攻击的影响。Web 服务器对于 HTTP 请 求的响应头中缺少 X-Permitted-Cross-Domain-Policies,这将导致浏览器提供的安全特性失效。 当一些在线的 Web Flash 需要加载其他域的内容时,很多 Web 会通 过设置一个 crossdomain.xml 文件的方式来控制其跨域方式。很有可能有些开发者 并没有修改 crossdomain.xml 文件的权限,但是又有和跨域的 Flash 共享数据的需求,这时候可以通过设置 X-Permitted-Cross-Domain-Policies 头的方式来替代 crossdomain.xml 文件

语法:

X-Permitted-Cross-Domain-Policies: master-only

说明:

none
不允许使用loadPolicyFile方法加载任何策略文件,包括此主策略文件。

master-only:
只允许使用主策略文件[默认值]。

by-content-type:
只允许使用loadPolicyFile方法加载HTTP/HTTPS协议下Content-Type 为text/x-cross-domain-policy的文件作为跨域策略文件。

by-ftp-filename:
只允许使用loadPolicyFile方法加载FTP协议下文件名为 crossdomain.xml的文件作为跨域策略文件。

all:
可使用loadPolicyFile方法加载目标域上的任何文件作为跨域策略文件,甚至是一 个JPG也可被加载为策略文件

Referrer-Policy

Referrer-Policy 首部用来监管哪些访问来源信息——会在 Referer 中发送——应该被包含在生成的请求当中

语法:

Referrer-Policy: no-referrer
Referrer-Policy: no-referrer-when-downgrade
Referrer-Policy: origin
Referrer-Policy: origin-when-cross-origin
Referrer-Policy: same-origin
Referrer-Policy: strict-origin
Referrer-Policy: strict-origin-when-cross-origin
Referrer-Policy: unsafe-url

说明:

no-referrer
整个 Referer 首部会被移除。访问来源信息不随着请求一起发送。 

no-referrer-when-downgrade (默认值) 在没有指定任何策略的情况下用户代理的默认行为。在同等安全级别的情况下(HTTPS->HTTPS),引用页面的地址会被发送,但是在降级的情况下 (HTTPS->HTTP)不会被发送。

origin
在任何情况下,仅发送文件的源作为引用地址。例如 https://example.com/page.html 会将 https://example.com/ 作为引用地址。

origin-when-cross-origin
对于同源的请求,会发送完整的URL作为引用地址,但是对于非同源请求仅发送文件的源。

same-origin
对于同源的请求会发送引用地址,但是对于非同源请求则不发送引用地址信息。

strict-origin
在同等安全级别的情况下(HTTPS->HTTPS),发送文件的源作为引用地址,但是在降级的情况下(HTTPS->HTTP)不会发送 。

strict-origin-when-cross-origin
对于同源的请求,会发送完整的URL作为引用地址;对于非同源,在同等安全级别的情况下(HTTPS->HTTPS),发送文件的源作为引用地址;在降级的情况下(HTTPS->HTTP)不发送此首部。

unsafe-url
无论是同源请求还是非同源请求,都发送完整的 URL(移除参数信息之后)作为引用地址。 这项设置会将受 TLS 安全协议保

lighttpd修改方法

 在lighttpd.conf文件中增加以下配置


setenv.add-response-header += (
    "X-Permitted-Cross-Domain-Policies" => "master-only"
)
setenv.add-response-header += (
    "Referrer-Policy" => "no-referrer-when-downgrade"
)

测试

修改之后重启

lighttpd  /lighttpd -f /etc/lighttpd.conf

修改前响应头

Content-Length: 191
content-security-policy: default-src http:
Content-Type: application/json;charset=UTF-8
Date: Fri, 28 Oct 2022 09:31:15 GMT
permissions-policy: interest-cohort=()
strict-transport-security: max-age=300; includeSubDomains
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block

 修改后响应头

Content-Length: 224
content-security-policy: default-src http:
Content-Type: application/json;charset=UTF-8
Date: Fri, 28 Oct 2022 10:01:49 GMT
permissions-policy: interest-cohort=()
Referrer-Policy: no-referrer-when-downgrade
strict-transport-security: max-age=300; includeSubDomains
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: master-only
x-xss-protection: 1; mode=block

从测试响应可以看到修改之后,响应头增加了以下部分

Referrer-Policy: no-referrer-when-downgrade
X-Permitted-Cross-Domain-Policies: master-only

参考链接

响应头缺失、禁用Options方法、解决跨域-pudn.com

Add HTTP Response Headers in lighttpd • Computer Science and Machine Learning (xarg.org)

Python之HTTP响应报文

一、HTTP响应报文分析

HTTP 响应报文效果图:

Python之HTTP响应报文_html

Python之HTTP响应报文_HTTP_02

响应报文说明:

--- 响应行/状态行 ---
HTTP/1.1 200 OK # HTTP协议版本 状态码 状态描述
--- 响应头 ---
Server: Tengine # 服务器名称
Content-Type: text/html; charset=UTF-8 # 内容类型
Transfer-Encoding: chunked # 发送给客户端内容不确定内容长度,发送结束的标记是0\\r\\n, Content-Length表示服务端确定发送给客户端的内容大小,但是二者只能用其一。
Connection: keep-alive # 和客户端保持长连接
Date: Fri, 23 Nov 2018 02:01:05 GMT # 服务端的响应时间
--- 空行 ---
--- 响应体 ---
<!DOCTYPE html><html lang=“en”> …</html> # 响应给客户端的数据

原始响应报文说明:

HTTP/1.1 200 OK\\r\\n
Server: Tengine\\r\\n
Content-Type: text/html; charset=UTF-8\\r\\n
Transfer-Encoding: chunked\\r\\n
Connection: keep-alive\\r\\n
Date: Fri, 23 Nov 2018 02:01:05 GMT\\r\\n
\\r\\n(响应头信息后面还有一个单独的’\\r\\n’不能省略)
<!DOCTYPE html><html lang=“en”> …</html>

说明:

每项数据之间使用:\\r\\n

二、HTTP 状态码介绍

HTTP 状态码是用于表示web服务器响应状态的3位数字代码

状态码

说明

200

请求成功

307

重定向

400

错误的请求,请求地址或者参数有误

404

请求资源在服务器不存在

500

服务器内部源代码出现错误

三、小结

  • 一个HTTP响应报文是由响应行、响应头、空行和响应体4个部分组成。 
  • 响应行是由三部分组成:HTTP协议版本 状态码 状态描述,最常见的状态码是200

Python之HTTP响应报文_状态码_03

以上是关于lighttpd http响应报文(Response)增加安全头Referrer-Policy和X-Permitted-Cross-Domain-Policies方法的主要内容,如果未能解决你的问题,请参考以下文章

应用层:http请求报文和响应报文

HTTP请求报文和HTTP响应报文(转载)

slighttpd基于lighttpd架构的Server项目实战—预备知识之Http

http请求报文和响应报文

HTTP请求报文和响应报文

HTTP报文(message)是什么?请求报文响应报文报文首部(header)报文主体(body)