首页 > 编程 > PHP > 正文

PHP 安全的电子邮件

2020-03-22 18:17:51
字体:
来源:转载
供稿:网友
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

以上代码存在的问题是,未经授权的用户可通过输入表单在邮件头部插入数据。

假如用户在表单中的输入框内加入这些文本,会出现什么情况呢?

someone@example.com%0ACc:person2@example.com%0ABcc:person3@example.com,person3@example.com,anotherperson4@example.com,person5@example.com%0ABTo:person6@example.com

与往常一样,mail() 函数把上面的文本放入邮件头部,那么现在头部有了额外的 Cc:, Bcc: 以及 To: 字段。当用户点击提交按钮时,这封 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( someone@example.com , Subject: $subject , $message, From: $email ); echo Thank you for using our mail form {//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 验证电子邮件地址

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

上一篇:PHP 错误处理

下一篇:PHP FTP 函数

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表