Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 在给定流程的每个步骤检查用户访问级别是否是一种良好的做法?_Laravel_Security - Fatal编程技术网

Laravel 在给定流程的每个步骤检查用户访问级别是否是一种良好的做法?

Laravel 在给定流程的每个步骤检查用户访问级别是否是一种良好的做法?,laravel,security,Laravel,Security,我有一个laravel webapp,我会检查用户是否可以在登录过程中的每一步执行某些操作或访问某些信息。例如,当他们希望查看他们的资产时,我会检查他们的UAC,当他们单击这些资产后,我会再次检查,即使“编辑”、“删除”按钮不可见,代码中仍然有一个复选框。这种模式贯穿于整个webapp。这是不是太过分了,会不会让我的网络应用程序到处都是支票呢?是的。每次在执行特权操作之前不检查访问权限时,您都会冒着这样的风险:入侵者可能会找到一种方法来绕过您先前的检查,并以某种方式触发该操作,而实际上却没有正确

我有一个laravel webapp,我会检查用户是否可以在登录过程中的每一步执行某些操作或访问某些信息。例如,当他们希望查看他们的资产时,我会检查他们的UAC,当他们单击这些资产后,我会再次检查,即使“编辑”、“删除”按钮不可见,代码中仍然有一个复选框。这种模式贯穿于整个webapp。这是不是太过分了,会不会让我的网络应用程序到处都是支票呢?

是的。每次在执行特权操作之前不检查访问权限时,您都会冒着这样的风险:入侵者可能会找到一种方法来绕过您先前的检查,并以某种方式触发该操作,而实际上却没有正确的访问权限。额外的几张支票对于健壮性和内心的平静来说是一个很小的代价

特别是,对于客户端发出的每个新请求,您应该始终重新检查服务器上的权限,因为客户端发送到服务器的所有内容都可能由用户控制。例如,即使您禁用客户端界面中的“编辑”或“删除”按钮,如何阻止恶意(甚至只是好奇)用户(例如通过浏览器的开发人员工具)重新启用它们,或者甚至阻止用户欺骗按钮将触发的实际编辑/删除请求


如果幸运的话,缺少服务器端权限检查所能做的就是让一些用户(如果你不幸运的话)可以完全访问你的站点。

这确实是一个很好的实践,中间件可以帮助你更轻松地实现这一目标


最后,这是一个无法回答的“视情况而定”问题。但请注意,通常通过使用关系数据库和搜索用户ID进行隐式访问检查。。。。在USER=123的查询类型中,用户永远看不到不属于他的东西。另一方面,请注意,例如,缺少“删除”按钮并不能阻止恶意用户发送删除命令(即使使用随机资源id)。我自己对此的回答再好不过了!回答得很好!我唯一可以远程添加的是将其设置为中间件。