2017-10-28 176 views
1

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

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

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

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

任何想法?

+0

Fonsec - 我正在寻找替代品的同一问题,并希望知道你最终确定了什么? –

回答

0

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

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

+1

谢谢你的建议。我确实使用HTTPS,当然:)但是,我不能使用建议的包,因为我在Elm中构建了前端,我不想依赖外部的JS调用 –

相关问题