我有一个laravel webapp,我检查用户是否可以执行某些操作或访问某些信息,而不仅仅是在登录期间。例如,当他们希望查看他们的资产时,我检查他们的UAC,在他们点击它们之后我再次检查,即使编辑,删除按钮不可见,代码中仍然有一个检查。这种模式在整个webapp中继续存在。这有点矫枉过正吗,这会让我的网络应用程序在整个地方看得太乱了吗?
答案 0 :(得分:2)
是的,确实如此。每次在执行特权操作之前不检查访问权限时,您都会冒险入侵者可能找到绕过早期检查的方法,并以某种方式触发该操作而不实际具有适当的访问权限它。一些额外的支票是一个很小的代价,以保证稳健和安心。
特别是,对于客户端发出的每个新请求,您应始终重新检查服务器上的权限,因为you should never trust user input,以及客户端发送到服务器的所有可能是在用户的控制下。例如,即使您禁用"编辑"或"删除"客户端界面中的按钮,阻止恶意(或甚至好奇的)用户重新启用它们的原因,例如通过他们的浏览器开发人员工具,甚至只是欺骗按钮会触发的实际编辑/删除请求?
如果您很幸运,所有缺少服务器端权限检查都会让某些用户see a bunch of deleted garbage.如果您不那么幸运,可能会在您的网站上授予他们完全的管理员权限
答案 1 :(得分:0)
这确实是一种很好的做法,中间件可以帮助您更轻松地实现这一目标。