我想知道在后端检查 https 请求中的 origin/referer 标头以了解前端域是否安全。
据我所知:
这些标题是由浏览器自动设置的。人们无法通过 javascript 更改它,除非他们使用一些修改过的浏览器或插件。
有人会声称某些代理软件可以更改http数据包,因此有人可能会在前端和后端之间使用它来伪造这些标头。但就我而言,https 是加密的。所以这是不可能的。
因此,如果我检查这些标头并且请求确实来自浏览器,那么这些标头将反映前端的真实域。我说得对吗?
感谢您的帮助!
您想保护标头免受谁的侵害?正如您所理解的,最终用户可以将标题设置为他们想要的任何内容:
除非他们使用一些修改过的浏览器或插件。
或非浏览器客户端,或用户控制的 HTTPS 代理。
您是对的,如果用户的系统设置正确(HTTPS 证书有效并且用户环境未受到损害),随机第三方很难(并且在有限的意义上“不可能”)修改请求。因此,通过这种方式,Referer 标头像请求的其余部分一样受到保护。
但它可以说最终用户想要说的任何话。如果最终用户不修改它,它只是“真实域”。
是的,可以使用几种不同的方法。要么使用 JS 代码在页面中执行此操作,要么使用开放重定向通过其他站点进行重定向。 假引用者允许您使用上面提到的这两种方法。