Symfony Security-循环中的删除按钮

时间:2018-07-15 20:20:05

标签: php ajax symfony security button

我想知道我的应用程序的安全性。我只是使用树枝循环显示数据库中的所有记录。当我创建一个单独的站点来显示详细信息并且有一些按钮例如删除这个东西。通常会发生DELETE方法,并且某人只能显示自己的详细信息。但是我想有一个按钮可以在基本视图中删除特定记录,其中每个记录都显示在例如在项目标题旁边。

  1. 我无法通过CreateFormBuilder执行此操作,因为我无法从表单发送该项目的当前ID(或者我只是不知道该怎么做)。但是安全吗?每个人都可以更改button的id参数并删除其他记录。

  2. 我可以使用AJAX并只需在树枝中单击按钮,但这是相同的情况。每个人都可以改变,例如按钮中的data-id参数并删除其他记录。

在这种情况下我该怎么办?您通常如何解决此问题?

总结,我想创建一个安全按钮以删除每个显示的记录旁边的项目。

祝你有美好的一天!

2 个答案:

答案 0 :(得分:1)

保护AJAX路由的一种方法是使用JWT(json-Web-Token)(请参见:https://jwt.io/)而不是随机字符串令牌。该令牌将用用户信息加密,以确保允许单击按钮的人做某事(并且令牌与请求一起发送到请求的标头中)。

无论如何,您都必须发送一些信息来标识要在数据库中擦除或修改的元素的ID。我将亲自实施此JWT系统,但也必须保护对您可以查看和单击这些按钮的页面的访问。这样,您可以假定用户没有恶意。

Theis捆绑包(https://github.com/lexik/LexikJWTAuthenticationBundle/blob/master/Resources/doc/index.md#getting-started)可以帮助您非常轻松地在symfony上实现此功能(我是该框架的新手,而且我在几个小时内就完成了-一件事情:如果您使用Apache,请不要这样做)别忘了在您的Apache配置中允许重写以允许symfony的.htaccess来执行其工作,否则Apache将剥离标头-这使我花了几个小时才能找出为什么事情行不通!)。

希望这会有所帮助!

答案 1 :(得分:0)

它实际上归结为您要构建哪种应用程序:

  • 更多传统应用-具有整页刷新/导航周期
  • 基于AJAX的服务器-对服务器进行各种异步调用

在任何情况下,您都有责任检查当前用户是否有权对对象进行任何更改(包括删除)。在id是整数(可以预测)的情况下,这一点尤其重要。

因此,首先,确保您的路由受到匿名用户的保护,其次,确保您制定了允许/拒绝用户的特定操作的权限策略。

大多数与权限相关的内容都可以通过 Voters 来实现,但是如果您确实需要繁重的工作,可以转到 ACL

希望这对您有帮助...