仅允许某些域访问web api

时间:2013-10-29 08:23:33

标签: asp.net-web-api

我有一个我创建的网络API。

我想确保只有某个域可以访问此数据,我不希望每个人都访问它。这是可以实现的吗?推荐吗?如何做到这一点,或者任何人都可以指出我正确的方向 - 文章等......

全部谢谢

2 个答案:

答案 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请求。

来自:Wikipedia: Cross-site request forgery prevention