保护API - JS前端和PHP后端

时间:2012-11-13 13:11:10

标签: php javascript security

我正在寻找一个很好的实现来保护我用PHP编写的后端。

情景:

服务器1(www.domain.com) 服务器只有JS / HTML到客户端

服务器2(www.domain2.com) 正在运行一个PHP服务器,它正在使用JSON数据响应服务器1(由Sevrer1上的Javascript模板引擎呈现)。

如何阻止其他人从Server1获取JSON响应? 我知道我可以添加一些API密钥,但它存储在JS中(每个人都可以读取它),我知道我可以检查请求是否来自Server 1 IP,但是伪造这样的请求并不是什么大不了的事。 / p>

3 个答案:

答案 0 :(得分:1)

从Server1到Server2进行内部调用是一种解决方案,不会将Server1暴露给互联网,将其添加到专用网络可能有所帮助。

即使有人解决问题,您也可以添加验证,例如确保请求来源来自授权来源(在您的情况下是Server2)。 如果请求源来自其他来源,则只需返回而不进行处理。

如果您仍然偏执,可以随时添加更多机制,例如hash-based message authentication code

答案 1 :(得分:1)

您可以做的一件事是在服务器1上创建会话cookie并同时将该会话值存储在服务器2上的数据库中。每当有人从服务器1发出请求时,您都会附加带有cookie值的请求并发送它在进行API调用时到服务器2。仅当传入会话ID与存储在数据库中的会话ID匹配时,服务器2才会返回JSON。

这不是万无一失的。有人可以破解cookie,一旦用户退出,您将需要清理会话。

正如您所提到的,另一种方法是在服务器1上使用服务器端脚本语言。

答案 2 :(得分:1)

为什么不创建一些短生命令牌并仅在服务器端共享它们,然后嵌入JS代码?

Source