2017-03-02 85 views
0

我已经在Microsoft Azure abc.com上托管了我的REST api,并且我只想从xyz.com接收基于HTML的页面的调用。使用c查找哪个主机已被REST api请求#

有没有什么办法可以找到xyz.com发送的REST请求,或者任何其他简单的方法来保护基于html的消费者的rest api?

使用MVC,ASP.NET

回答

0

最简单的方法是检查您收到的HTTP请求,检查Referer标头,在这个问题详述:

How do I get the referrer URL in an ASP.NET MVC action?

问题它不是100%安全的,因为Referer头可能被欺骗,如果有人决定绕过它。

另一种方法是添加基于IP的过滤器,阻止仅映射到xyz.com的IP的传入请求,但这完全取决于您如何托管您的网站 - 虚拟机位于天蓝色,托管网站或其他内容。

+0

谢谢。我会试一试。其基于Azure的网站。我试过公共或开放的datapower网站谁可以提供客户端/秘密密钥,然后令牌,但无法找到。你碰巧知道任何可用于公众而不是企业的服务? –

1

无论您的后端是C#,您都可以使用访问控制 - 允许来源 HTTP标头将xyz.com指定为允许的推荐链接。

您必须指定Vary:来源标题Access-Control-Allow-Origin是通配符以外的任何其他名称。这“表示[S]到客户端服务器的响应会有所不同基于起源请求头的值”

您可以了解更多关于此头和它是如何工作在不同的场景在本SO回答:https://stackoverflow.com/a/10636765/1449160

参见:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin

然而,这是不够安全,CORS是一个客户端实现的功能。您可能希望您的C#后端检查引荐来源,作为您的访问控制的一部分。这是另一个SO问题,其答案涉及这个问题:Getting the HTTP Referrer in ASP.NET

最后,为了确保您的API免受未经授权的访问,有很多方法可以做到这一点,这将超出几个段落的范围。 OAuth可能是最为人熟知的,但您也可以为您的客户端生成唯一的令牌并将其包含在标头中或使用您的令牌的HTTP基本身份验证作为用户名或密码等。

+0

正如@Avner Shahar-Kashtan所提到的,引用者URI也可能被欺骗,所以即使这样也不足以保证安全。您可能需要您的CORS头文件,后端引用程序检查以及某种类型的身份验证令牌,以确保您的API安全。 –

+0

谢谢山姆!我会试一试。并更新。 –