2013-10-29 90 views
4

我有一个我创建的web api。只允许某个域名访问网络api

我想确保只有某个域可以访问这些数据,我不希望每个人都访问它。这是可以实现的吗?是否推荐?如何一会去这样做或任何人可以点我到正确的方向 - 物品等......

感谢所有

回答

1

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

你可以验证引荐域这样的:

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

但是,当你这样做,请您考虑以下内容:如果请求到来

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

来自:Wikipedia: Cross-site request forgery prevention