REST服务以访问另一个第三方服务

时间:2018-06-27 17:45:49

标签: java angular model-view-controller

我正在设计Angular中的UI应用程序。 我还开发了Java后端。

我的应用程序访问第三方REST服务以获取一些天气数据。 该服务是付费的,我有访问它的钥匙。

我正在尝试将这些数据集成到我的Angular APP中。 我一直在阅读,不建议在客户端存储或管理密钥(尚未见过足够安全的方法来避免有人从客户端获取密钥)。 所以我的问题是,必须使用后端服务来实现对天气数据的访问吗? 有没有更好的方法?就像在我的应用程序上创建只能用作代理的REST服务,添加密钥,访问其他第三方REST服务并返回相同的原始数据一样?

对我来说,直接在UI上实现它是理想的选择,但我担心如何处理安全性。

1 个答案:

答案 0 :(得分:1)

好吧,我只是强调您不应该将密钥放在客户端,特别是要注意“服务已付费”。这样做会使您的密钥暴露在Internet上,爬网程序肯定会找到它,并且如果其他人开始使用它,可能会造成危害,特别是在配额需要支付的情况下。

关于代理,您想在后端设置页面数据,而不要使用来自客户端的呼叫来获取数据。但是,如果此功能涉及实时更新或AJAX,则明智的做法是先通过CORS保护。

CORS还不够,因为非Web浏览器或行为不当的客户端仍可以访问您的代理。为了解决此问题,您想发行在任何地方都能看到的令牌(XSRF / CSRF)。

按钮行,您要提问的关键元素是:

  • 请勿在您的UI层中放置键
  • 如果此服务打开,则构建代理服务不会保护它们
  • 如果您的密钥也不安全,则不知道您的密钥不会阻止任何人使用它们;例如,访问服务以获取数据,或将网页与页面的一部分组成-由服务器提供服务