【问题标题】:php mail() remove CC, BCC and securityphp mail() 删除CC、BCC和安全
【发布时间】:2012-09-01 18:49:21
【问题描述】:

我是 stackoverflow 的新手,找不到我的问题的答案;如何在 php 中保护我的 mail() 代码以防止人们添加最终会导致大量邮件的密件抄送?当在我的网站中输入新评论时,我的网站使用 PHP mail() 服务向我发送电子邮件。防止人们篡改它的最佳方法是什么,例如删除密件抄送?到目前为止我所拥有的是:

function mres($input){
if (get_magic_quotes_gpc()){
    $input = stripslashes($input);
}
return mysql_real_escape_string($input);
}
$name = strip_tags(mres($_POST['name']));
$comment = strip_tags(mres($_POST['comment']));

$to = 'myself@gmail.com';
$subject = 'Website - comment';
$body = 'A new comment has been entered on the website.'."\n\n"."$name".' said:         '."\n\n"."$comment";
mail($to,$subject,$body);

【问题讨论】:

  • 不重新发明轮子,开始使用phpmailer怎么样? PS:你为变量申请mysql_real_escape_string做什么?
  • 该函数询问服务器魔术引号是默认打开还是关闭。根据结果​​,将激活适当的安全措施,从而在发表评论时防止 sql 注入或类似情况。
  • 您不需要(也不应该)使用mysql_real_escape_string,除非您立即将结果用作 SQL 查询的一部分。 (并且mail() 不是 SQL 查询。)

标签: php email


【解决方案1】:

假设这段代码后面是:

mail($to, $subject, $body);

那么它是安全的,如果矫枉过正——mail() 的唯一易受注入攻击的参数是控制标头字段的参数($to$subject$additional_headers)。 strip_tagsmysql_real_escape_string 都是不必要的,后者会使撇号在您的电子邮件中显示为\'

如果没有对mail() 的后续调用,那么它是非常安全的,因为它什么都不做。 :)

【讨论】:

  • 我的下一行是:mail($to,$subject,$body);我不小心从问题中省略了,谢谢。
【解决方案2】:

我会看类似http://mailgun.com/

事实上,如果您只使用 mail(),您的邮件通常会成为人们的垃圾邮件

【讨论】:

  • 他只是在这里给自己发信息!不需要邮件服务。
  • 就目前而言,当在我的网站上输入新评论时,mail() 只是通过电子邮件发送给我自己。由于每周可能有 4-5 人的低流量,我可以负担得起。它还允许我在不登录网站的情况下检查评论是否合适。
猜你喜欢
  • 2011-09-12
  • 2013-04-05
  • 2018-06-27
  • 2014-05-21
  • 2021-05-03
  • 1970-01-01
  • 2013-10-11
  • 2013-01-19
  • 1970-01-01
相关资源
最近更新 更多