我如何保护PHP表单?

时间:2011-01-17 23:38:49

标签: php security

我没有运行关键任务网站,所以我不是在寻找工业强度解决方案。但是,我想防止基本攻击,例如有人嘲笑硬盘上的虚假页面并试图获得未经授权的访问。是否有任何标准技术可确保仅从合法用途中接受表单提交?

7 个答案:

答案 0 :(得分:7)

接近一些技术:

  • 为每个表单生成表单键。密钥与数据库记录有关,还有与页面视图有关的其他内容(userID,cookie等)。如果表单键与该用户/ cookie不匹配,则无法发布表单。该密钥仅使用一次,防止自动工具使用被盗密钥(对于该用户)再次发布。
  • 表单键也可以是共享密钥哈希:生成表单的PHP可以对cookie和userID进行哈希处理,例如,在表单发布时可以验证的内容。
  • 您可以添加验证码,要求用户验证。
  • 您还可以限制该用户/ Cookie的帖子数量(限制),这可以防止某些形式的自动滥用。

您不能保证表单不会从磁盘发布,但您可以限制它自动化的容易程度。

答案 1 :(得分:5)

你做不到。没有可靠的方法可以区分页面上用户生成的HTTP请求,也可以区分具有自己网页的恶意用户。

只需使用正确的密码身份验证方法,除非他们知道密码(无论HTTP请求来自何处),否则任何人都无法破解任何内容。一旦你有可靠的服务器端身份验证,你就不需要浪费时间来避免担心这种情况的非强健箍。

答案 2 :(得分:4)

您不应该自己创建登录系统,因为它很难正确(安全)。您不应存储您网站上用户的密码(以任何形式)(危险)=>例如lifehacker.com遭到入侵(我的帐户也是:()。您应该使用类似lightopenid的内容(因为stackoverflow也使用openid)进行身份验证。

您网站上的其他表单应具有以下保护(至少):

答案 3 :(得分:1)

我还建议:

  1. 保存发送表单的计算机的IP(如果它烦人的话,将其从服务器阻止)
  2. 在需要时使用CAPTCHA,以避免机器人......
  3. 加载信息后将用户发送到另一个页面,因此刷新页面时将无法检索POST数据。

答案 4 :(得分:1)

正确验证表单数据对于保护您的表单不受黑客和垃圾邮件发送者的侵害至关重要!

  • 从中剥离不必要的字符(多余的空格,制表符,换行符) 用户输入数据(使用PHP trim()函数)
  • 从用户输入数据中删除反斜杠()(使用PHP) stripslashes()函数)

有关更多详细信息,您可以参考Form Validation

答案 5 :(得分:0)

很少有可以添加到表单安全性的方法就像

  1. 敏感输入
  2. 原产地验证
  3. 重新验证码
  4. AVoid服务器变量
  5. 有关详情,请参阅我的PHP Form handling tutorial安全部分。

答案 6 :(得分:-1)