Php Symfony2如何保护服务器端表单中的某些字段选择以避免用户修改

Php Symfony2如何保护服务器端表单中的某些字段选择以避免用户修改,php,forms,security,symfony,Php,Forms,Security,Symfony,我正在搜索服务器端方式,以确保表单中的某些实体字段选择,以便用户在提交表单之前无法更改它 上下文 假设我有一个包含多个球队的表格,网站用户可以根据他们的权限在多个球队中添加球员。当用户希望在特定团队中添加球员时,服务器会提供一个表单来填写球员详细信息。此表单需要将团队ID传输到服务器以完成palyer创建 即使我为团队实体指定了read_属性,仍然可以欺骗HTML删除属性并将另一个团队ID值发送到服务器 Q:在玩家表单中,如何避免用户更改团队实体字段值? 此外,播放器添加过程已使用CRUD Sy

我正在搜索服务器端方式,以确保表单中的某些实体字段选择,以便用户在提交表单之前无法更改它

上下文

假设我有一个包含多个球队的表格,网站用户可以根据他们的权限在多个球队中添加球员。当用户希望在特定团队中添加球员时,服务器会提供一个表单来填写球员详细信息。此表单需要将团队ID传输到服务器以完成palyer创建

即使我为团队实体指定了
read_
属性,仍然可以欺骗HTML删除属性并将另一个团队ID值发送到服务器

Q:在玩家表单中,如何避免用户更改团队实体字段值?

此外,播放器添加过程已使用CRUD Symfony命令工具生成,这意味着表单字段详细信息由URL
www.mysite/route/new
和表单提交
www.mysite/route/create
填充

在这种情况下,即使我在
buildForm
函数中将选择限制为1个实体项,因为我知道
www.mysite/route/new
(通过在url中传递参数,例如
www.mysite/route/new/1
),用户提交表单时也不会出现这种情况

我真的不知道该怎么做。此时,我将teamid值保存在会话变量中,并在create操作中的表单验证之前进行设置


任何帮助都将不胜感激。

我认为您在处理提交的数据时应该检查权限:即使用户修改HTML,他们也不能编写不允许的内容。@tzunghaor在Symfony中,不一定如此。如果表单包含不应该存在的字段(与HTML混淆)@IgorPantović如果您是对的,请检查提供的值是否是可能选择的一部分,则表单将无效。但我不知道如何筛选团队,以便在验证过程中(创建url调用)将选择减少到只有一个@tzunghaor您也是对的,但假设用户有权在团队1和2中添加玩家。当用户单击在团队1中添加玩家时,我如何强制用户在团队1而不是2中创建玩家,即使用户使用HTML?对不起,这个可怜的例子。。。。这更关乎安全concern@sdespont在我看来,表单中根本不需要teamId。它应该在url中。(获取表单:/team/15/player/new,发布表单:/team/15/player)。所以,在发布操作时从url获取团队ID,并检查他是否有权添加到该团队。其他一切都是不必要的。