2012-04-24 80 views
0

这可能看起来像一个愚蠢的问题,但用户输入的消毒不断让我困惑,我希望一劳永逸地得到明确的答案。隐藏表格元素上的高度

因此,继承人的情景

  1. 客户填写网页表单。
  2. PHP会检查是否填写了必填字段,否则不会让客户继续下去。
  3. 如果是,则用户输入显示在屏幕上以进行确认,而输入数据也作为隐藏表单元素存储。
  4. 然后客户确认输入,然后发送隐藏的元素进行进一步处理。

使用数据不应该转到最后一刻的原则,这将如何适用于隐藏在第3点的数据中的数据。(很显然,屏幕上的数据在这一点上我有())

我应该在隐藏的元素上使用htmlentities,但是这在技术上不是最后一个阶段,因为在第4部分之后我会再次使用变量,然后再将它们粘贴到数据库或电子邮件中。

我完全意识到我可能会完全错误,所以任何想法都非常受欢迎。^_^

回答

2

如果你写出用户对页面的输入,它应该总是被转义。否则,没有什么可以阻止人们在他们的输入中添加javascript等,或者尝试逃离隐藏字段并将代码注入页面。所以,在隐藏的领域也使用htmlentities。仅仅因为用户看不到它们并不会阻止人们向他们注入代码。

+0

这就是我的想法,但不会导致我进一步的问题?就像O'Maley这样的名字在进入数据库之前最终会像O'Maley一样? – cosmicsafari 2012-04-24 14:24:49

+0

如果你使用的是htmlentities,那就不会使用单引号,只是html之类的东西,例如“和<(这就是mySQL转义函数那样做)。我不是100%,因为我经常不使用PHP,但是当你提交表单之后,htmlentities()转义字段不会作为未转义的文本返回吗?如果他们不这样做,你只需要记住在将它们粘在数据库之前就可以避开它们。 – Tim 2012-04-24 14:33:23

+0

那么使用预处理语句因此,涵盖单引号等,不知道是否htmlentities会试图做到这一点。感谢我认为我有足够的工作与现在。干杯^ _ ^ – cosmicsafari 2012-04-24 14:35:43