c# - 使用 .NET Core API 获取请求的原始来源
问题描述
我知道这Request.Headers["Origin"]
会获取请求的原始标头,但这可以通过手动设置标头在客户端进行更改。因此不是那么安全。
是否存在包含请求的原始、只读/不可更改来源的值?就像 CORS 正在使用的那个?
我需要这个值来检查请求是否正式来自它应该来自的站点。诀窍是我需要它在控制器方法中根据该值和仅用于该站点的键来搜索数据库中的对象。
CORS 的问题是它可以将 URL 列表列入白名单,但不能检查站点和密钥是否彼此属于,因此如果它模仿站点 2 的Request.Headers["Origin"]
和密钥,白名单站点 1 可以访问白名单站点 2 的数据
解决方案
不幸的是(或者幸运的是?)没有可靠的方法可以从浏览器发送到您的服务器的数据中检查这一点。用户能够伪造您从浏览器收到的任何和所有信息。
这就是为什么需要可靠地确定用户来源的机制使用某种令牌机制、公共/私人签名、证书和类型来确定它的原因。不幸的是,这绝不像查找浏览器为您提供的一些信息那么简单,因此您可能需要依靠除源之外的其他东西来重新设计白名单机制,这可能涉及单点登录措施(如SAML) . 如果没有关于原产地检查旨在解决的潜在问题的更多信息,很难提供进一步的建议。
推荐阅读
- python - 如何在 display_details 中显示句子?
- build - NativeScript Angular,Google Play:此版本不符合 Google Play 64 位要求
- linux - --cap-add=NET_ADMIN 和在 .yml 中添加功能之间的区别
- unit-testing - 如何在调用包含异步操作的方法时等到 io.mockk 捕获的插槽被填充?(单元测试)
- angular - 材料设计分页器不适用于动态生成的表格
- angular - 具有动态字段的反应式表单嵌套 FormArray
- powershell - 如何在 Powershell 中导出具有数组列表的对象
- java - 在 Docker 中连接 Spring Boot 和 MongoDB
- react-native - 在本机反应中渲染之前数据不可用
- nestjs - @Query() 不会转换为 DTO