2011-10-07 65 views
0

我将在我的例子中使用PHP,但我的问题适用于任何编程语言。Web开发:如果管理员后端应该如何锁定?

每当我处理,可以在没有登录谁的用户填写表单(换言之,不受信任的用户),我做几件事情,以确保它是安全的数据库来存储:

  • 验证$ _POST中是否存在所有预期的字段(使用Firebug等工具删除了所有字段)
  • 确认$ _POST中没有意外的字段。这样,数据库中的字段不会意外地被写入。
  • 确认所有预期字段都是预期类型(几乎总是“字符串”)。这样,如果恶意用户修改代码并在字段名称的末尾添加“[]”,就不会出现问题,因此PHP会将该字段视为数组,然后对其执行检查它是一个字符串。
  • 验证是否填写了所有必填字段。
  • 确认所有字段(包括必填字段和可选字段)都已正确填写(例如,电子邮件地址和电话号码的格式均为预期)。
  • 与前一项相关,但值得成为自己的项目:验证下拉菜单中的字段是否使用实际位于下拉菜单中的值提交。同样,用户可以修改代码并将下拉菜单更改为任何他们想要的。
  • 为了防止用户有意或无意地包含恶意代码,对所有字段进行清理。

我不认为上述任何东西都是矫枉过正的,因为正如我所提到的,填写表格的用户是不可信的。

但是,当涉及到管理员后端时,我不确定所有这些都是必需的。这些是我仍然认为必要的事情:

  • 验证是否填写了所有必填字段。
  • 确认所有字段(包括必填字段和可选字段)都已正确填写(例如,电子邮件地址和电话号码的格式均为预期)。
  • 为了防止用户有意或无意地包含恶意代码,对所有字段进行清理。

我在考虑删除剩余的项目,以节省时间和更少的代码(因此,更多的可读代码)。这是一个合理的事情要做还是值得平等对待所有形式,而不管它们是否由可信用户填写?

这些是仅有的两个原因,我可以为什么它可能是明智的,平等对待所有形式的想到:

  • 可信用户的凭证可能是由一个不受信任的用户被发现。
  • 受信任的用户的机器可能会感染恶意软件,并与表单混淆。我从来没有听说过这种恶意软件,并怀疑这是一件真正令人担忧的事情,但无论如何这都是需要考虑的事情。

谢谢!

+0

根本不需要做出妥协。如果CSRF /表单字段验证代码被正确抽象,您应该能够透明地在所有表单中使用它。如果每次从零开始重新写入,显然是一件难以重复的事情。 – deceze

回答

1

不知道所有的细节,很难说。

然而,总的来说,这感觉就像是代码重用应该是可能的情况。换句话说,感觉这个样板验证不需要为每个独特的表单重新编写。相反,我的目标是创建一些可用于任何形式的可重用外部类。

你提到的PHP和可用已经有大量的表单验证类:

http://www.google.com/search?gcx=w&sourceid=chrome&ie=UTF-8&q=form+validation+php+class

祝您好运!

相关问题