我在使Ajax请求安全方面遇到困难。 问题是数据篡改。我已经阅读过有关此问题的信息,建议永远不要相信客户提供的信息。使用fiddler或任何此类工具可以很好地改变它。我们还需要在服务器端进行验证。但我的问题是如何验证。
让我们看一个例子。 假设我在数据库中有Employee信息,并且我公开了一个方法GetEmployeeDetailByEmployeeId。在任何员工提出此请求之前,他将使用userId和密码进行身份验证,并授权是否允许此类用户提出此请求。
但如果一名员工给予其他员工的员工,他实际上会获得他不应该看到的数据。要解决这个问题,我们有两个解决方案 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)
,请继续检查部门,如果请求的用户和当前用户都在同一部门,则显示信息,否则显示错误。这应该基于您的信息。