在与拨打电话的网站相同的域/服务器上保护API?

时间:2011-10-07 14:24:43

标签: html ajax security

如果您的API和网站对该API进行ajax调用是在同一台服务器(甚至是域)上,您将如何保护该API?

我只希望允许来自同一服务器的请求!没有来自任何其他域的远程请求,我已经安装了SSL,这是否意味着我很安全?

4 个答案:

答案 0 :(得分:1)

查看HTTP标头中的request_referer。告诉你请求的来源。

答案 1 :(得分:1)

这取决于你想要保护它的目的。

第三方让访问者使用访问者在您网站上提供的凭据从您的API请求数据

浏览器will protect you automatically,除非您采取disable protection的步骤。

第三方让访问者使用您的API和访问者凭据请求更改您的网站

没有任何关于此的Ajax具体内容。对CSRF实施常规防御。

第三方使用自己的客户端请求数据

再一次,Ajax没有具体说明这一点。您无法阻止发出请求。您需要身份验证/授权(例如密码保护)。

  

我已经安装了SSL这是否意味着我很安全

没有。这可以保护数据不被拦截。它不会阻止其他人请求数据或从端点访问数据。

答案 2 :(得分:1)

我认为你有一些困惑,我想帮助你清理。

由于您正在谈论“进行Ajax调用”,您正在谈论您的应用程序向您的服务器发出远程请求。即使您的网站是从同一个域提供服务,您也可以提出远程请求。

  

我只希望允许来自同一服务器的请求!

存在问题。您不是在谈论从服务器到服务器发出请求。您正在谈论从客户端到服务器(Ajax)发出请求,因此您不能使用IP限制(除非您知道将访问您站点的每个客户端的IP地址)。

限制Ajax请求不必与限制其他请求有任何不同。如何防止未经授权的用户访问“普通”网页?通常,您可以让用户进行身份验证,在服务器上创建用户会话,将会话cookie传递回客户端,然后在每次请求时提交,对吧?所有这些东西也适用于Ajax请求。

如果您的API在互联网上公开,那么您无法阻止其他人尝试对其发出请求(同样,除非您了解所有允许的客户端的IP)。因此,您必须使用服务器端控制来授权来自允许的客户端的远程调用。

哦,实施TLS是朝着正确方向迈出的一步。我总是对那些认为没有TLS可以做的开发人员感到惊讶。但仅靠TLS是不够的。

答案 3 :(得分:0)

您可以检查IP地址,如果您只想从同一服务器接受请求,请将.htaccess放在api目录或virtualhost配置指令中,以仅允许127.0.0.1或localhost。配置基于您拥有的Web服务器。