前端UI使用的后端API应该(以及如何)受到保护吗?

时间:2017-10-28 10:24:47

标签: rest web-services web-applications api-design

假设您正在开发一个由后端HTTP API组成的应用程序,该API为前端UI提供服务。 UI在客户端的浏览器上呈现时,将需要对后端进行某些调用(例如,获取视图的数据)。但是,例如,可以在Chrome的开发者控制台上检查所有这些调用。这暴露了我的应用程序的整体逻辑和内部API端点。

这是Web应用程序的问题吗?我浏览了一些其他网站(例如,Reddit),我确实能够检查正在进行的API调用,我甚至设法通过cURL重现它,得到相同的响应。

我解决这个问题的第一个想法是加密所有数据并在前端应用程序内部解密。但是,我认为这不会提供太多安全性,因为私钥必须在应用程序的源代码中进行硬编码,现代浏览器也可以对其进行检查。此外,这可能会极大地影响应用程序的性能。

我能想到的最好的方法是以某种方式将一个令牌(JSON Web令牌,可能?)分配给会话(后者又分配给用户)。进行API调用需要此令牌,并且可能会有一个较短的到期时间。但是,仍然可以在HTTP请求中看到令牌。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我正在使用 bcrypts =>我的MEAN应用中的https://www.npmjs.com/package/bcryptjs + jsonwebtokens也是如此。 Bcryptjs在服务器端创建一个salt并将加密的令牌发送到客户端。 API调用使用相同的标记。这使得任何网络钓鱼尝试的解码都有点困难。

使用HTTPS代替。 => Are querystring parameters secure in HTTPS (HTTP + SSL)?