我有一个我创建的网络API。
我想确保只有某个域可以访问此数据,我不希望每个人都访问它。这是可以实现的吗?推荐吗?如何做到这一点,或者任何人都可以指出我正确的方向 - 文章等......
全部谢谢
答案 0 :(得分:2)
内置“ASP.NET Web API的CORS支持”版本2(MVC5): http://aspnetwebstack.codeplex.com/wikipage?title=CORS%20support%20for%20ASP.NET%20Web%20API
答案 1 :(得分:1)
您可以编写自己的方法来验证请求是否来自某个域。但我不建议将其用作敏感数据的安全性,因为域很容易被欺骗。我强烈建议坚持使用默认的身份验证机制,而不是发明自己的身份验证机制,但验证某个域可能是一个额外的验证。
您可以像这样验证referer域:
var currentReferrer = HttpContext.Current.Request.UrlReferrer.GetLeftPart(UriPartial.Path);
if (currentReferrer != requiredReferrer)
{
// Not the right domain.
}
但是,请在执行此操作时考虑以下因素:
检查HTTP Referer标头以查看请求是否来自 授权页面通常用于嵌入式网络设备 因为它不会增加内存需求。但是请求 省略Referer标头必须被视为未经授权,因为 攻击者可以通过发出请求来抑制Referer头 FTP或HTTPS URL。这种严格的Referer验证可能会导致问题 使用浏览器或代理来省略隐私的Referer标头 原因。此外,旧版本的Flash(9.0.18之前版本)允许恶意攻击 使用任意HTTP请求生成GET或POST请求的Flash 使用CRLF注入的标题。[22]类似的CRLF注射 客户端中的漏洞可用于欺骗引用者 HTTP请求。