我可以在CakePHP 1.3中使用动态创建的表单字段和安全组件吗?

时间:2010-09-22 18:51:22

标签: php security cakephp cakephp-1.3

使用CakePHP 1.3 ,我有一个(工作)表单,动态创建表单字段(通过Javascript)。一切都很好,通过saveAll()保存了多个模型,它很漂亮。

但是,每当我启用安全组件(希望得到一些自动魔法CSRF保护)时,我就会陷入404黑洞。

据我所知,这可能是(可能是!)由动态创建的表单字段引起的,如文档中所述。

有没有办法让他们一起玩得很好?

1 个答案:

答案 0 :(得分:5)

你也不能吃蛋糕。 (茶清!)

CSRF保护意味着只允许提交某个表单字段列表。此列表在表单创建时决定并修复。您不能受CSRF保护动态更改表单中的字段。

有两种解决方案:
如果动态创建的字段的数量和名称有限,请在表单中创建它们并使用CSS隐藏它们,然后使用Javascript显示它们。这样您就不会动态创建字段,而只是动态显示它们 如果这不起作用,您可以使用$disabledFields option将字段列入白名单(同样,只有事先知道其名称)或使用$validatePost选项完全禁用CSRF。