关于表单处理的几个问题。

时间:2011-02-09 19:37:55

标签: php security

我想知道我可以为表单添加更多安全性的方法,以便我可以防止攻击。从过去几天在网上搜索,以及我可以采用的方法,我已经找到了许多解决方案,我希望在继续之前了解你的解决方案。

  1. 包含表单键以阻止XSS(跨站点脚本)和跨站点请求伪造总是好的吗?

  2. 处理表单数据的最佳方法是:

    1. AJAX
    2. 将表单处理代码放在同一页面的顶部,并使用$ _SERVER ['PHP_SELF']
    3. 处理它
    4. 将表单的操作设置为另一个页面并从中处理所有值。
    5. 通过单个PHP类文件处理表单值。
  3. 哪种方式可以过滤或清理表单数据?

  4. 谢谢

2 个答案:

答案 0 :(得分:2)

这是我的常规设置。我基本上使用自定义框架。

我设置了处理特定数据的模型。例如,如果我有一个创建新员工的员工表单。我有一个员工模特。该模型具有指定的值,以便在数据库中生成新员工。如果此模型中缺少任何值,当我尝试保存它时,它将引发异常。这是我的第二层“输入验证”。第一层是一个简单的java脚本表单验证器,以确保不丢失任何值。

现在,对于页面的任何类型的输入(GET,POST),我有一个处理这些卫生的类。它迭代所有$ _POST和$ _GET值并清理它们(mysql_real_escape_string,php中的stripslashes)。

现在在html中设置我的表单数据.. php可以处理表单数据“数组”,我的意思是如果我有一个名为“employee [name]”的表单输入并且我提交该表单,php将识别该表单提交为$ _POST ['employee'] ['name'] ..我知道的非常了不起。现在,每个表单都有自己的指定字段,这些字段是模型所必需的。我只需调用我的模型,将模型数据设置为$ inputClass-> post('employee')(这是一个数组)并保存数据。

我更喜欢这种通用方法。它安装快速简便,安全可靠。

编辑:此外,像Ajax和Javascript这样的东西是奢侈品。您不需要这些来处理表单,它们只是为用户增添了便利。例如,在启用了javascript之前,您可以在不重新加载页面的情况下验证表单。但请注意,您应该始终通过php验证您的表单。

答案 1 :(得分:0)

看看这个: http://thedemosite.co.uk/phpformmailer/source_code_php_form_mailer_more_secure_than_cgi_form_mailers.php

它使用引荐来检查和一个不引人注目的javascript catcha,以防止垃圾邮件提交表单。