如何在网站中隐藏API调用


How to hide API calls in website?

我和我的朋友开发了一个网站。对于前端,我们使用AngularJS,对于后端,我们使用Laravel。

每当需要提取数据时,都会从前端对PHP进行API调用。

我担心的是这个API调用在网络面板中清晰可见。然后一些坏人可以很容易地滥用这个API。我该如何避免这种情况?

在大多数情况下,公开API并不是一件坏事,但您需要考虑这一点:
1.你应该设计你的API,这样只有合法的操作才能进行。例如:用户不能使用API删除整个数据库
2.如果需要,您可以提供一些身份验证机制,因此尝试调用API的人必须登录(身份验证令牌应存储在会话中,并在每次API调用时在服务器端进行验证)。

如果您想隐藏POST/GET参数表单控制台。尝试在angular中进行JSONP调用。JSONP调用不是真正的ajax请求,不会在Firebug中显示。您还可以在收到响应后使用clearconsole()清除控制台,还可以在laravel后端验证请求的IP。

这就像常规路由一样。例如:每个人都知道他们可以通过/:username路由访问Facebook上的用户档案,但Facebook阻止未经授权的客户端查看这些数据。REST路由也使用了相同的概念。

就像普通的页面请求一样,AJAX调用和传递/接收的数据都可以被用户看到。JSONP可以用来防止常规开发工具记录API请求,但这不是一个好的安全解决方案,恶意用户仍然可以识别API。

即使加密了请求负载和响应,在加密之前和解密之后也可能被恶意用户截获。

您提到在API上使用正确的身份验证,这对于大多数情况来说已经足够好了。