我正在使用基于会话的授权在不同的域上使用前端和后端应用程序.我已经设置了一个有效的CORS配置,它可以按预期工作localhost(例如从端口:9000到端口:8080).一旦我在安全域上部署应用程序(两个域都只允许HTTPS),在JavaScript中就不再可以访问CSRF cookie,从而导致前端的错误后续请求(缺少CSRF头).
cookie由Set-Cookie标题中的后端设置,不使用HttpOnly标志.它实际上设置在浏览器的某个位置,因为后续请求包含会话cookie和CSRF cookie.尝试通过JavaScript访问它(使用例如document.cookie在控制台中)返回一个空字符串.DevTools of Chrome不会在前端域上显示任何 cookie(后端域甚至没有列出).
我期待cookie被设置并在当前域(前端域)上可见.我正在使用axios库的withCredentials标志.
你有什么想法,为什么不能从JavaScript或Chrome中的DevTools访问cookie?这与Strict-Transport-Security标题有什么关系吗?
1.初始GET响应标头
HTTP/1.1 401 Unauthorized
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://[my-frontend-domain]
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Encoding: gzip
Content-Type: application/json;charset=UTF-8
Date: Wed, 20 Sep 2017 11:57:07 GMT
Expires: 0
Pragma: no-cache
Server: Apache-Coyote/1.1
Set-Cookie: CSRF-TOKEN=[some-token]; Path=/
Vary: Origin,Accept-Encoding
X-Content-Type-Options: nosniff
X-Vcap-Request-Id: [some-token]
X-Xss-Protection: 1; mode=block
Content-Length: [some-length]
Strict-Transport-Security: max-age=15768000; includeSubDomainsRun Code Online (Sandbox Code Playgroud)
2.后续POST请求标头
将Swisscom CloudFoundry解决方案与Spring Boot应用程序一起使用时,Strict-Transport-Security会在HTTPS响应中添加两个标头.我已经研究过这个问题,并发现CloudFoundry解决方案添加了几个标题.默认情况下,Spring Boot也已添加Strict-Transport-Security标头(在安全站点上),这会导致两个不同的HSTS标头.
我想在我的应用程序中配置我的应用程序的标头.有没有办法禁用Swisscom CloudFoundry解决方案的自动标题添加?
如果没有,有没有办法告诉Swisscom Cloud覆盖现有的Strict-Transport-Security标题而不是将其附加到标题列表?
部署Swisscom Cloud的Spring Boot应用程序的HTTP响应包含以下两个标头:
Strict-Transport-Security:max-age=31536000 ; includeSubDomains
Strict-Transport-Security:max-age=15768000; includeSubDomains
Run Code Online (Sandbox Code Playgroud) http-headers cloud-foundry hsts swisscomdev strict-transport-security
我已经构建了一个Web应用程序(使用我最喜欢的语言Fantom!),并且正在通过提供行业标准的HTTP响应标头将其锁定于XSS和其他此类攻击。
我的问题是,应该为标题设置哪些响应?
我可以为每个响应设置标题,但是鉴于大多数请求都是针对图像,字体,样式表等的,因此这似乎是非常浪费的Content-Security-Policy。特别是它可能会变得很冗长。
由于许多标头与拥有的HTML页面(以及其中包含的Javascript)有关,因此我感到其中大多数只需要为HTML页面设置。
我看过各种资源,例如:
尽管他们解释了标头的作用,但没有解释标头应用于和服务于哪些资源!
我在下面列出了HTTP响应标头,Content-Types我认为应该将它们与它们一起使用。但是有人知道这是否正确吗?
HTTP Response Header text/html All Content-Types
------------------------- --------- -----------------
Content-Security-Policy X
Referrer-Policy X
Strict-Transport-Security X
X-Content-Type-Options X
X-Frame-Options X
X-XSS-Protection X
Run Code Online (Sandbox Code Playgroud)
(当我说text/html我也包括在内时application/xhtml+xml。)
Referrer-Policy 是所有内容类型,因为CSS能够加载字体和图像。
security http-headers x-frame-options content-security-policy strict-transport-security