Heim > Backend-Entwicklung > PHP-Tutorial > PHP 保险的电子邮件

PHP 保险的电子邮件

WBOY
Freigeben: 2016-06-13 12:07:55
Original
2507 Leute haben es durchsucht

PHP 安全的电子邮件

PHP 安全的电子邮件PHP E-mailPHP Error在上一节中的 PHP e-mail 脚本中,存在着一个漏洞。PHP E-mail 注入首先,请看上一节中的 PHP 代码:<html><body><?phpif (isset($_REQUEST['email']))//if "email" is filled out, send email  {  //send email  $email = $_REQUEST['email'] ;   $subject = $_REQUEST['subject'] ;  $message = $_REQUEST['message'] ;  mail("[email&#160;protected]", "Subject: $subject",  $message, "From: $email" );  echo "Thank you for using our mail form";  }else//if "email" is not filled out, display the form  {  echo "<form method='post' action='mailform.php'>  Email: <input name='email' type='text' /><br />  Subject: <input name='subject' type='text' /><br />  Message:<br />  <textarea name='message' rows='15' cols='40'>  </textarea><br />  <input type='submit' />  </form>";  }?></body></html>以上代码存在的问题是,未经授权的用户可通过输入表单在邮件头部插入数据。假如用户在表单中的输入框内加入这些文本,会出现什么情况呢?[email&#160;protected]%0ACc:[email&#160;protected]%0ABcc:[email&#160;protected],[email&#160;protected],[email&#160;protected],[email&#160;protected]%0ABTo:[email&#160;protected]与往常一样,mail() 函数把上面的文本放入邮件头部,那么现在头部有了额外的 Cc:, Bcc: 以及 To: 字段。当用户点击提交按钮时,这封 e-mail 会被发送到上面所有的地址!PHP 防止 E-mail 注入防止 e-mail 注入的最好方法是对输入进行验证。下面的代码与上一节类似,不过我们已经增加了检测表单中 email 字段的输入验证程序:<html><body><?phpfunction spamcheck($field)  {  //filter_var() sanitizes the e-mail   //address using FILTER_SANITIZE_EMAIL  $field=filter_var($field, FILTER_SANITIZE_EMAIL);    //filter_var() validates the e-mail  //address using FILTER_VALIDATE_EMAIL  if(filter_var($field, FILTER_VALIDATE_EMAIL))    {    return TRUE;    }  else    {    return FALSE;    }  }if (isset($_REQUEST['email']))  {//if "email" is filled out, proceed  //check if the email address is invalid  $mailcheck = spamcheck($_REQUEST['email']);  if ($mailcheck==FALSE)    {    echo "Invalid input";    }  else    {//send email    $email = $_REQUEST['email'] ;     $subject = $_REQUEST['subject'] ;    $message = $_REQUEST['message'] ;    mail("[email&#160;protected]", "Subject: $subject",    $message, "From: $email" );    echo "Thank you for using our mail form";    }  }else  {//if "email" is not filled out, display the form  echo "<form method='post' action='mailform.php'>  Email: <input name='email' type='text' /><br />  Subject: <input name='subject' type='text' /><br />  Message:<br />  <textarea name='message' rows='15' cols='40'>  </textarea><br />  <input type='submit' />  </form>";  }?></body></html>在上面的代码中,我们使用了 PHP 过滤器来对输入进行验证:FILTER_SANITIZE_EMAIL 从字符串中删除电子邮件的非法字符FILTER_VALIDATE_EMAIL 验证电子邮件地址
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage