我的API REST与我的网站/脚本

时间:2016-08-01 06:50:08

标签: java bash api rest

我知道这个问题可能已被提出但我找不到答案......

我正在开发一个网站,我知道将来它将成为它的应用版本。所以我决定做一个将被我的网站和我的应用程序调用的Api。

第一个问题:这样做是不是一个好主意?

我现在问自己如何保护我的api休息和我的网站之间的连接,我不希望除了我的网站之外的任何人在我的api上调用方法。我正在考虑OAuth1但是从我所读到的内容Oauth1更多的是将两个陌生人网站连接在一起,而在我的情况下,他们都是我的。

第二个问题:如何确保我的API REST和我的网站之间的连接?

在另一个项目中(与第一个项目无关)我需要在API REST和bash脚本之间做同样的事情。同样的事情他们都是我的。

第三个问题:如何保护API REST和我的bash脚本之间的连接?

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

您可以在不同级别设置安全,定位不同的内容。如果您对仅作为REST API服务器的客户端的Web服务器具有完全控制权,则如果两者共享相同的基础结构,则可以执行的最安全的操作是禁止API服务器上的任何外部请求,并且仅允许来自Web的请求服务器

这可以通过API服务器前面的反向代理来完成,该服务器知道Web服务器的IP地址,并且只允许来自那里的请求(如果两者都在同一个区域中)在同一防火墙后面的局域网上说,以物理上禁止攻击者使用Web服务器IP。如果两个服务器都必须通过通用Internet连接,则应在它们之间设置VPN以实现相同的安全级别。

但是,只要您有一个可以连接到API服务器的应用程序,这将不再可用,因为现在请求可以来自任何地方。因此,我强烈建议不要让API服务器安全依赖于应用程序:无论您尝试什么,攻击者都可以反汇编应用程序的代码,在调试器上运行它并监视网络以了解它与API服务器的交换方式。现在,常见的用法是对用户进行身份验证<(简单的低级别安全性的密码,由您信任的公司提供的证书 - 最终是您的 - 用于高级别安全性) 。而且您现在必须保护API服务器仅允许某些用户使用某些方法 - 最终在某些域对象上。 Spring Security是此选择的工具。当然,敏感信息 - 包括所有与身份验证相关的信息 - 只能使用HTTPS。

这里的规则是,安全不应取决于你发现的可伪造或容易被盗的东西:

  • 公共(外部)IP地址
  • 应用与服务器之间的协议
  • 不同用户或计算机之间共享的密码
  • 通过未加密的HTTP传输的信息。
当您有更精确的问题时,

Information security 网站,向安全专家询问安全问题。

对于第三个问题,通过浏览器,应用程序或bash脚本询问请求并不重要。重要的只是如何识别请求背后的用户。