4

我有一个我创建的 web api。

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

谢谢大家

4

2 回答 2

2

您可以编写自己的方法来验证请求是否来自某个域。但我不建议将其用作敏感数据的安全性,因为域很容易被欺骗。我强烈建议坚持使用默认的身份验证机制,而不是自己发明,但验证某个域可能是额外的验证。

您可以像这样验证引用域:

var currentReferrer = HttpContext.Current.Request.UrlReferrer.GetLeftPart(UriPartial.Path);
if (currentReferrer != requiredReferrer)
{
            // Not the right domain.
}

但是,当你这样做时,请考虑以下几点:

检查 HTTP Referer 标头以查看请求是否来自授权页面通常用于嵌入式网络设备,因为它不会增加内存需求。但是,必须将省略Referer 标头的请求视为未经授权,因为攻击者可以通过从FTP 或HTTPS URL 发出请求来抑制Referer 标头。这种严格的 Referer 验证可能会导致浏览器或代理出现问题,这些浏览器或代理出于隐私原因而忽略了 Referer 标头。此外,旧版本的 Flash(9.0.18 之前)允许恶意 Flash 使用 CRLF 注入生成带有任意 HTTP 请求标头的 GET 或 POST 请求。 [22] 客户端中的类似 CRLF 注入漏洞可用于欺骗 HTTP 请求的引用者。

来自:维基百科:跨站点请求伪造预防

于 2013-10-29T08:34:22.043 回答
2

“CORS 对 ASP.NET Web API 的支持”版本 2 (MVC5) 中有内置: http ://aspnetwebstack.codeplex.com/wikipage?title=CORS%20support%20for%20ASP.NET%20Web%20API

于 2013-10-29T08:33:21.467 回答