应该如何为 php/jquery 应用程序完成 Ajax 安全性


How should Ajax security be done for php/jquery app?

我正在研究PHP中的一个模块,该模块使用来自另一个系统的登录身份验证,并具有以下特征:

    登录
  • 是通过表单提交完成的,然后基于用户登录,允许基于后端处理访问不同的子模块集。
  • 页面交互都是通过jQuery完成的。与后端的通信都是在Ajax中完成的。
  • 子模块包括报表和 CRUD 窗体,每个都需要访问控制,例如,一个部门无法查看报表 A,但可以查看报表 B,而另一个部门可以同时查看报表 B。表格严格适用于某些群体。
  • 所有 AJAX 请求都返回 JSON

我可以在后端找出 ACL,但我不确定是否保护 AJAX 请求。
我能想到的最好的办法是为每个用户、每个子模块提供 API 密钥,并检查每个请求的用户会话。

澄清一下,我无法触及登录过程,因为它仅限于另一个系统。我只能获取cookie并查询其他系统以验证它们是否已登录。

在这种情况下,您将如何强化 AJAX 安全性?

我可以在后端找出ACL

是的,你可以...并且必须。您不能相信客户端会告诉您是否允许客户端访问某些内容。

但我不确定是否保护 AJAX 请求。

Ajax 请求只是由 JavaScript 发出的 HTTP 请求。在保护它们方面,唯一的区别是你编写的JavaScript必须为"权限被拒绝"的响应做好准备(这样它才能向用户显示合适的消息)。

我能想到的最好的办法是为每个用户、每个子模块提供 API 密钥,并检查每个请求的用户会话。

通常,您只需使用会话来跟踪用户的登录状态,并且他们访问级别/角色。您说您可以访问 cookie,请使用它们。

基本上确保 http 请求的安全性始终相同,无论是否为 ajax。

有不同类型的检查:

    数据
  • 一致性:在服务器接收数据时检查可能的注入,但也应在客户端接收时检查数据以避免间接注入。
  • 数据源:检查发件人是谁,并尽可能使用 SSL。

RGDS。