2016-03-21 171 views
0

我目前正在Laravel PHP框架中开发一个Web应用程序来处理使用HTML表单的所有数据输入。使用PATCH方法的潜在漏洞

在数据库中创建新条目不是问题,因为它使用POST方法,其中ID对用户是隐藏的,并且在服务器端有验证。

但是,当涉及到更新或修改数据库行中的条目时,我正在使用PATCH方法将数据发送到URI /form/{ID},例如/form1/1。我在服务器端执行数据和用户验证,以防止来自用户的不需要的输入。但是,有时具有HTML知识的某些用户可以简单地将的形式从/form1/1改为/form1/2改为PATCH将数据改为ID=2而不是ID=1,将其计为无用旁路。

有没有什么方法可以防止这种情况发生,因为这具有潜在的安全风险。

+4

您可以通过简单地检查数据的所有者是否为该主题数据所属的用户来防止此问题。如果是的话,编辑将发生,否则重定向。 –

+0

除验证数据的所有权外,是否还有其他验证需要执行以进一步防止上述问题? – Woody

+1

标题完全是误导性的,这意味着有一个与'PATCH'方法相关的漏洞。存在此漏洞是因为您尚未执行检查。如果你做@MattBurrow提到的,那么你很好。为了使这个过程变得微不足道,你可以利用Laravel的中间件,如果检查成功,它会执行路由回调。 – Mjh

回答

1

您需要实施授权。查看官方文档以获取更多详细信息https://laravel.com/docs/master/authorization

+0

我有权限,除非我验证数据的所有权,否则用户可以简单地将'patch'修改为任何'ID' – Woody

+0

如果您拥有授权,则用户只能更新他自己的帖子。 –

+0

也许他认为他有认证。但是,是的,应该实施授权,尝试使用安全选民,这是我们在symfony项目中的做法。 – tomazahlin