Zend表单:编辑时的安全方式商店条目ID?

时间:2011-09-03 07:26:37

标签: security zend-framework zend-form

我是Zend Framework的新手,我在使用Zend_Form创建编辑表单时遇到问题。

我的问题是我需要在编辑期间存储条目ID,我已经看到一些使用隐藏表单字段的示例,但是隐藏字段可以由用户操作。

那么:我如何设置一个由$form->populate($data);填充的表单字段,并在提交请求后可用,但不以任何方式对用户进行editabel /可见?

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

我不确定是否真的有意义隐藏价值。

请考虑以下事项:

  • 要显示正确的编辑器表单,您需要要编辑的对象的ID。
  • 在允许用户编辑某个ID之前,您将检查用户是否可以编辑它。

因此,如果你把ID放在表格中,那真的不重要:

  • 当您发布编辑表单时,您应再次检查用户是否仍可以编辑该ID。
  • 如果用户更改隐藏ID,则无关紧要。他们仍然可以通过在网站上找到它来编辑其他ID。 (这是假设您的检查未告诉您用户无权访问)

答案 1 :(得分:0)

你想隐藏什么样的数据? 数据应该在post或get.if你不把你的数据放在表单中,那么你将不得不使用不如POST安全的GET。 如果你有一些数据并且你不希望用户看到这些数据,那么你不应该把这些数据放在一个表格中。你可以使用s submitted values.lets suppose your hidden field is user的密码存储和检索隐藏的数据。你不需要发送密码客户端编辑表单时返回客户端。您可以根据用户提交的名字和姓氏操作控制器中的密码。 如果您仍然坚持,您可能想尝试使用ZF加密数据并回显您的值并将加密数据设置为隐藏的表单元素。

答案 2 :(得分:0)

Zend_Form使用您指定的表单元素生成HTML表单元素。因此,它的元素功能缩小为简单的HTML形式。

隐藏表单元素用于传递用户不应手动输入的数据。但正如你自己所说,没有保证它不会被篡改。因此,使用隐藏的表单值不会提供任何安全性。

大多数情况下,您最好使用服务器端值(如存储在会话中)来引用要保护用户的值。

我建议您将ID保存在会话值中,然后您可以在隐藏表单字段中使用会话密钥。这样用户无法更改目标ID。但是,您无法在一步中使用$ form-> populate($ values)。您必须使用其他步骤设置目标值:

  1. 从会话中获取数据
  2. 使用获取的数据
  3. 设置表单元素值