我正在为我们的前端私人使用做一个REST后端,他们都将在同一台服务器上。 问题是我担心安全问题,我不希望攻击者直接使用API,无论是通过JS还是使用其他REST客户端。
让我们以此服务为例
http://myserver:8080/something/webresources/film
这是一个允许GET,PUT,POST,DELETE的服务我希望只有前端能够使用它,否则因为任何人都可以看到客户端代码,所以很容易获得端点并开始放置或获取数据。我确实有BASIC AUTH所以他们必须注册,如果他们做错了什么我就能看到谁做了,但这并没有解决问题。
我可以实现访问控制,以便用户只能获取/更新/删除他们自己的电影,但我必须为每个REST服务(我现在已超过100)这样做,而且我可能需要实际获得其他电影
这是我的第一个公共项目,我真的输了。
答案 0 :(得分:1)
您可以通过您的网络服务器来完成。我正在使用 Nginx。我有一个检查 $http_referer 的 if 语句。如果它什么都不返回,或者返回的值不是我的应用程序/前端页面(意味着有人试图直接访问 api),它将返回一个 403 禁止页面。
如果您的应用程序不向您的用户发送电子邮件,请不要担心以下情况:我添加了一个块以允许访问我的静态图像作为唯一的例外,因为我的应用程序发送带有图像的电子邮件而我不不想让它们坏掉。
就是这样。问题解决了。除了我的前端页面/应用程序,没有人可以访问我的 api。
答案 1 :(得分:0)
从服务器端调用REST API的唯一选择。您无法向用户隐藏其浏览器中发生的事情...您可以拥有分层应用程序,因此前端层可以调用服务器上的后端层,而客户端只能看到前端。 (检查分层系统约束。)