为初学者保护PHP表单?资源?

时间:2009-12-11 17:36:10

标签: php security forms

我成功构建了我的第一个html / PHP表单,它使用_POST全局变量在多个页面之间传递变量,然后使用mail()函数通过电子邮件发送结果。

我确信这种形式是非常不安全的,因为它现在很容易受到所有漏洞的攻击,我想知道如何修补漏洞,但我几乎是PHP的初学者。

您是否可以推荐任何简单易懂的教程来保护PHP表单?

4 个答案:

答案 0 :(得分:2)

在保护代码时,您需要做的第一,第二和第三个最重要的事情是假设代码处理的所有数据都以某种方式窃取您的数据并破坏您的服务器。即使你亲自硬编码到脚本中的数据! :P

确保在使用之前验证并验证每个数据。使用intvalfloatval函数验证数字,正则表达式以验证文本字段(用户名,密码等...),并在执行SQL查询时始终尝试使用Parameterized Statements

并保持用户输入完全远离include和shell命令。如果需要根据use输入执行includes和shell命令,请在实际用户输入上使用switch和/或if语句,并根据它们执行静态命令。如果这也不起作用;在使用之前对输入进行非常彻底的验证,验证和消毒......然后交叉手指,希望所有优秀的剥削者都在寻找另一种方式:)

最重要的是;非常非常偏执狂。人们出去找你! :)

...然后发现自己是一个轻松的爱好,所以你不要发疯xD

答案 1 :(得分:1)

我建议使用PHP Sessions而不是在表单之间传递变量 - 这是保护输入数据的一种方法。

结帐this for a start

答案 2 :(得分:1)

如果您不熟悉使用php的表单,那么此网站可能对您有用:myphpform.com
另一个网站概述了可能的攻击:phpsec.org

答案 3 :(得分:0)

一些帮助我使用我的第一个PHP应用程序的小安全提示:

  1. 如果您在一个网页上接收数据并在同一网站的其他网页上访问它,请将它们放入$ _SESSION []。永远不要通过POST或GET在隐藏的表单字段中传递它们。
  2. 如果从用户收到的文字数据显示为网页的一部分或邮寄为HTML邮件,请始终在显示/邮寄之前对数据进行strip_tags()(以对抗XSS攻击)。
  3. 从用户收到然后需要存储在SQL数据库中的所有数据都需要转义以抵御SQL注入攻击(即mysql的mysql_real_escape_string或使用数据库抽象)。