实现Ajax调用的安全性

时间:2013-01-10 11:07:30

标签: ajax security

我在使Ajax请求安全方面遇到困难。 问题是数据篡改。我已经阅读过有关此问题的信息,建议永远不要相信客户提供的信息。使用fiddler或任何此类工具可以很好地改变它。我们还需要在服务器端进行验证。但我的问题是如何验证。

让我们看一个例子。 假设我在数据库中有Employee信息,并且我公开了一个方法GetEmployeeDetailByEmployeeId。在任何员工提出此请求之前,他将使用userId和密码进行身份验证,并授权是否允许此类用户提出此请求。

但如果一名员工给予其他员工的员工,他实际上会获得他不应该看到的数据。要解决这个问题,我们有两个解决方案 1.我们应该检查对数据库的请求,该人要求的信息是否适合他,或者他是该人的经理 我们应该以某种方式在应用层自身验证我们是否应该拒绝来电。

第一种方法是性能密集型,我必须提出数据库请求并找到记录的关联,这也会增加开发成本。

请建议采用哪种方式,我们有更好的解决方案来解决这类问题。

1 个答案:

答案 0 :(得分:1)

显然,您需要在后端检查它,否则您的应用程序可能会被孩子利用。

<强>更新

您需要在后端实施授权机制,然后在开始时加载权限后,可以将其添加到用户会话中,这样您就不需要每次查找数据库了时间,您只需要检查用户对权限所需权限的权限。

更多

要实施身份验证机制:目标,user可以查看自己的个人资料,但supervisor可以查看其department内的所有人。

  • user A已在会话中加载user_id,请说user_id = 123
  • user A只能请求他的信息,if (user_id == req_user_id)然后显示信息,否则显示错误。
  • user B的权限值为100,然后让他给他supervisor打电话。现在if (user_id == req_profile_id)不是 true 我们会检查权限。假设此特定任务的任务权限为10 if (user_perm >= task_perm),请继续检查部门,如果请求的用户和当前用户都在同一部门,则显示信息,否则显示错误。

这应该基于您的信息。