0

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

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

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

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

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

4

2 回答 2

1

我可以找出后端的 ACL

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

但我不确定如何保护 AJAX 请求。

Ajax 请求只是由 JavaScript 发出的 HTTP 请求。保护它们的唯一区别是您编写的 JavaScript 必须为“权限被拒绝”响应做好准备(因此它可以向用户显示合适的消息)。

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

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

于 2012-05-30T12:34:40.690 回答
0

基本上保证一个http请求的安全性总是一样的,ajax与否。

有不同种类的检查:

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

rgds。

于 2012-05-30T12:31:13.243 回答