将URL中的id或主键安全传递给symfony2 doctrine2进行编辑

时间:2012-08-13 04:38:32

标签: php symfony doctrine-orm

对于像

这样的控制器,我的网址如下所示

/user/profile/{id}/edit

现在我发现它并不安全,因为如果优先成员在那里输入任何其他数字,那么数据将被插入错误的用户。

基本上我在首页上有选择学生名单的表格,老师然后选择学生,然后进一步。在这里,我提交表单并在会话变量中设置userid

很少有东西能正常工作,因为我没有在URL中添加任何变量。

但是我被困在哪里我有用户添加的assignemnts列表。因为我以表格格式显示,每次点击都会分开分配。我必须将assignmentid放入网址

有没有办法解决这个问题,所以我不需要在URL中添加任何内容

2 个答案:

答案 0 :(得分:1)

首先,您应该假设每个用户输入/操作都可能是错误或邪恶的:因此,在Symfony2防火墙和isGranted函数下实施验证,以检查用户是否有权编辑用户。

其次,也许你应该在url中给一个用户名或用户slug中的id:然后通过耕种你的基础的所有用户id来到达编辑页面会更加困难

答案 1 :(得分:0)

通过URL传递ID没有任何问题。您可以使用POSTSESSION数据来传递ID,但这对用户来说既麻烦又烦人,因为它可能会扰乱浏览器历史记录导航。

相反,如果担心安全问题,您应该对每个请求进行权限验证。如果问题是美学问题而非安全问题,则可以为每个可以在URL中传递的作业创建唯一名称。