繁体   English   中英

使用 .NET Core API 获取请求的原始来源

[英]Get original origin of request with .NET Core API

我知道Request.Headers["Origin"]获取请求的原始标头,但这可以通过手动设置标头在客户端进行更改。 因此不是那么安全。

是否有这样的值包含请求的原始、只读/不可更改来源? 就像 CORS 正在使用的那样?

我需要这个值来检查请求是否正式来自它应该来自的站点。 诀窍是我需要在控制器方法中根据此值和仅用于该站点的键在数据库中搜索对象。

CORS 的问题在于它可以将 URL 列表列入白名单,但不能检查站点和密钥是否属于彼此,因此如果白名单站点 1 模仿Request.Headers["Origin"]就可以访问白名单站点 2 的数据Request.Headers["Origin"]和站点 2 的密钥

不幸的是(或者幸运的是?)没有可靠的方法可以从浏览器发送到服务器的数据中检查这一点。 用户可以伪造您从浏览器收到的任何和所有信息。

这就是为什么需要可靠地确定用户来源的机制使用某种令牌机制、公共/私有签名、证书和确定它的种类的原因。 不幸的是,这从来都不像查找浏览器为您提供的一些信息那么简单,因此您似乎需要依靠除来源之外的其他东西来重新设计白名单机制,这可能涉及单点登录措施(如SAML ) . 如果没有更多关于起源检查旨在解决的潜在问题的信息,就很难提供进一步的建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM