2010-07-13 116 views
0

我在我的网站上有一个联系邮件表单,我想让这个表单足够安全。 这是最好的方式来完成这项工作,有没有什么办法隐藏我发送邮件到另一个页面的php变量。PHP安全表单

任何样本或链接或想法?

安全 - 我的意思是我的数据是安全的,因为用户会插入他们的个人资料,如护照号码,SSN ECT,并希望这些数据能够以某种方式安全。我曾经在某处看过一些注射,有些人可以将这些数据通过表格发送出去。我想我现在清楚了?

+1

什么是“安全”?这可能意味着很多事情。 – 2010-07-13 18:12:17

+3

@theatrus:不,问题是:什么是“足够”? – Borealid 2010-07-13 18:15:21

+0

安全在哪方面?你想发送什么“PHP变量”? – Gumbo 2010-07-13 18:16:15

回答

3

使用HTML PurifierOWASP

HTML过滤

HTML净化器是用PHP编写的符合标准的HTML 过滤库。 HTML净化器不仅会为一个彻底的审核移除所有 恶意代码(更好地称为 XSS),
安全又宽容的白名单

OWASP

开放Web应用安全 项目(OWASP)是所有 OWASP 基金会的活动名称。

+0

你应该详细说明。 – Gumbo 2010-07-13 18:17:10

+0

@Gumbo:我认为链接是足够的。加入反正:) – Sarfraz 2010-07-13 18:21:24

+1

@Gumbo问题是问题是模糊的。 HTML Purifier可能不合适,OWASP的建议也可能与这个问题无关。然而可能。这个答案当然是在黑暗中拍摄的。 – Artefacto 2010-07-13 18:21:30

0

如果安全的,你的意思是相对保护,垃圾邮件发送者,一个好东西以及许多其他做的是有一个电子邮件输入字段为最终用户把他们的答复,以实际强制有效的MX entires。

 function isValidEmail($email){ 

     $pattern = '/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))* 
\@([a-z0-9])*(\.([a-z0-9])([-a-z0-9_-])([a-z0-9])+)*$/i'; 

    if(!preg_match ($pattern, $email)){return false;} 



     list($user_name, $mail_domain) = explode("@",$email); // Split email address into username and domain name 

     if (checkdnsrr($mail_domain, "MX")) return true; 

     return false; // Invalid email address 
     } 

当然不是一个全面的解决方案,但它确实有助于大幅度削减自动提交。

+0

没有评论downvote让我伤心:( – dmp 2010-07-13 18:31:37

+0

我也很好奇,大声笑... – DeaconDesperado 2010-07-13 18:33:59

+0

因为这不是检查有效电子邮件地址的好方法,正则表达式可能是一个更好的解决方法。PS:我不是那个低估了它的人,但我相信这将是原因 – quantumSoup 2010-07-13 18:51:15

0

您应该:

  • 要求用户申请一个验证码(或登录),使它更难机器人使用你的邮件形式。
  • 发送的邮件预定义不会忽略只(如果可能)。
  • 接受POST(不使用GET),以防止CSRF。
  • 不允许HTML在你的邮件。
7

为什么没有人提到HTTPS

只是让你得到的形式使用HTTPS协议提交,所有的数据都被加密,透明(这意味着你不需要做任何事情来解密在PHP中,它只是工作)

+0

如何使我的表单提交给我们使用https协议。 这些日期将如何解密到您想要发送给他们的电子邮件? – AXheladini 2010-07-13 18:41:47

+0

您需要在您的服务器上安装SSL证书并与注册服务商一起激活。然后,您可以使表单页面中的所有元素(包括表单自己的操作属性)使用https://打开HTTPS连接。这将加密客户端和服务器之间的通信。然而,从PHP发送SSN号码或非常敏感的个人信息仍然是一个糟糕的主意。 – DeaconDesperado 2010-07-13 18:50:31

+0

无需发送加密的电子邮件而无需收件人解密(通过自己或使用特殊客户端)。其实这里有一个相关的问题:http://stackoverflow.com/questions/3146847/design-problem-secure-self-destructing-email。无论如何,你绝对不应该**以明文形式向SSN或其他敏感信息发送电子邮件。 – quantumSoup 2010-07-13 18:54:32

0

HTTPS协议是最好的解决方案。 对于Spamer保护,您可以使用验证码。 如果你从一台服务器传递变量到另一个你可以把它使用加密的更多保护。