我正在设计Angular中的UI应用程序。 我还开发了Java后端。
我的应用程序访问第三方REST服务以获取一些天气数据。 该服务是付费的,我有访问它的钥匙。
我正在尝试将这些数据集成到我的Angular APP中。 我一直在阅读,不建议在客户端存储或管理密钥(尚未见过足够安全的方法来避免有人从客户端获取密钥)。 所以我的问题是,必须使用后端服务来实现对天气数据的访问吗? 有没有更好的方法?就像在我的应用程序上创建只能用作代理的REST服务,添加密钥,访问其他第三方REST服务并返回相同的原始数据一样?
对我来说,直接在UI上实现它是理想的选择,但我担心如何处理安全性。
答案 0 :(得分:1)
好吧,我只是强调您不应该将密钥放在客户端,特别是要注意“服务已付费”。这样做会使您的密钥暴露在Internet上,爬网程序肯定会找到它,并且如果其他人开始使用它,可能会造成危害,特别是在配额需要支付的情况下。
关于代理,您想在后端设置页面数据,而不要使用来自客户端的呼叫来获取数据。但是,如果此功能涉及实时更新或AJAX,则明智的做法是先通过CORS保护。
CORS还不够,因为非Web浏览器或行为不当的客户端仍可以访问您的代理。为了解决此问题,您想发行在任何地方都能看到的令牌(XSRF / CSRF)。
按钮行,您要提问的关键元素是: