PHP 安全的电子邮件 PHP E-mail PHP Error 在上一节中的 PHP e-mail 脚本中,存在着一个漏洞。 PHP E-mail 注入 首先,请看上一节中的 PHP 代码: <html> <body> <?php if (isset($_REQUEST['email'])) //if "email" is filled out, send email { //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"; } 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> 以上代码存在的问题是,未经授权的用户可通过输入表单在邮件头部插入数据。 假如用户在表单中的输入框内加入这些文本,会出现什么情况呢? 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 会被发送到上面所有的地址! PHP 防止 E-mail 注入 防止 e-mail 注入的最好方法是对输入进行验证。 下面的代码与上一节类似,不过我们已经增加了检测表单中 email 字段的输入验证程序: <html> <body> <?php function 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("someone@example.com", "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 验证电子邮件地址
发表评论
-
yii2 引进css
2015-12-09 16:22 0$this->registerCssFile(STATI ... -
GridView
2015-10-29 10:18 0<?= GridView::widget ... -
使用pack 填充空白符 unpack解
2015-08-10 15:43 569<?php $book = array(array ... -
php lookandsay
2015-08-07 18:01 479<?php function lookands ... -
php strpos 为什么没找到要用 ===false 做判断
2015-08-07 14:36 763如果这个字符串中没有找到相应的子字符串 就返回false ... -
php 获取当前浏览器信息
2015-08-07 11:05 04.10 以前 是$HTTP_SERVER_VARS ... -
php 遍历一个文件夹下面的子文件
2015-08-05 15:57 561function my_scandir($dir) ... -
什么是HMVC
2015-07-31 11:01 448HMVC模式即Hierarchical-Model-V ... -
PHP 通过代理发送电子邮件 mail()
2015-06-15 16:19 0/** * 邮件发送类 * 支持发送纯文本 ... -
unsoap
2015-06-03 16:30 01. 首先,去 http://sourceforge.net/ ... -
file_get_contents 和 curl 性能比较
2015-06-03 11:57 0$timeStart = microtime_float(); ... -
PHP获取 当前页面名称、主机名、URL完整地址、URL参数、获取IP
2015-05-29 14:07 0PHP获取 当前页面名称、 ... -
php MySQL Create Database 创建数据库
2014-10-15 16:04 831MySQL Create Database 创 ... -
php 连接数据库
2014-10-15 16:05 368MySQL 连接与管理 让 PHP 支持 MySQL ... -
PHP 对象的存储与传输(序列化 serialize 对象)
2014-10-15 16:06 2342PHP 对象的存储与传输(序列化 serialize ... -
PHP 对象克隆 clone 关键字与 __clone() 方法
2014-10-15 16:07 1183PHP 对象克隆 clone 关键字与 __clone ... -
PHP 抽象方法与抽象类 abstract 关键字
2014-10-15 16:07 531PHP 抽象方法与抽象类 abstract 关键字 ... -
PHP 重载方法 __call()
2014-10-21 16:20 389PHP 重载方法 __call() __call() ... -
PHP 重载
2014-10-23 11:07 342PHP 重载 一个类中的方法与另一个方法同名,但 ... -
PHP 特殊方法 __set()、__get()、__isset() 与 __unset()
2014-10-13 15:37 0PHP 特殊方法 __set() ...
相关推荐
在PHP开发中,发送电子邮件是一项常见的任务,尤其在通知用户、提供订阅服务或者处理网站反馈时。`PHPMailer`是一个广泛使用的开源库,用于在PHP应用程序中方便地发送邮件。这个库包括两个主要的文件:`class....
电子邮件收发系统是基于PHP开发的一种用于发送和接收邮件的应用程序。PHP是一种广泛使用的开源脚本语言,尤其在Web开发领域中,它以其简洁、高效和丰富的库支持而备受青睐。这个精心收集的PHP源码提供了学习和实现...
在PHP编程领域,电子邮件收发系统是一个常见的应用场景,它允许用户通过Web界面发送和接收电子邮件。这个案例将探讨如何利用PHP实现这样的系统,涉及到的主要知识点包括SMTP协议、PHPMailer库的使用、邮件格式化以及...
【PHP+MYSQL电子邮件系统详解】 在信息技术领域,PHP与MySQL是两种非常常见的开源技术,广泛应用于网站开发,尤其是用于创建动态、交互式的Web应用程序。PHP是一种服务器端的脚本语言,而MySQL则是一款关系型数据库...
电子邮件收发系统是一种基于Web的通信工具,它允许用户通过PHP编程语言来发送和接收电子邮件。这个系统的核心功能包括配置POP3服务器以接收邮件,以及可能的IMAP支持以实现更高级的邮件管理。下面我们将深入探讨这个...
PHPMailer是一个广泛使用的开源PHP库,专为PHP开发者设计,用于方便、高效地创建和发送电子邮件。这个库包含了丰富的功能,使得在Web应用程序中处理邮件变得简单易行。标题和描述都强调了PHPMailer是一个全面的电子...
在PHP中发送电子邮件是一项常见的任务,它涉及到网络通信和邮件协议的理解。PHP提供了一个内置的mail()函数,以及一些第三方库如PHPMailer和SwiftMailer,用于更复杂的邮件发送需求。以下将详细介绍如何使用PHP发送...
在PHP中实现电子邮件功能是一项常见的任务,这通常涉及到与邮件服务器进行交互,发送文本或HTML格式的邮件,以及可能地附带附件。本教程将详细阐述如何使用PHP来完成这一目标,同时考虑到数据库的集成和程序部署。 ...
【PHPMailer】是一种广泛使用的PHP库,专门设计用于发送电子邮件。这个函数包支持PHP 4和5的不同版本,使得在不同环境下都能灵活地处理邮件发送功能。PHPMailer提供了丰富的选项和错误处理机制,使得开发者可以方便...
电子邮件定时发送是信息技术中一种常见的应用场景,特别是在商业环境中,用于自动化地向用户推送促销、...通过合理的设计和实现,可以构建一个高效、安全的电子邮件定时发送系统,满足商家向用户定期推送信息的需求。
在PHP开发中,发送电子邮件是一项常见的任务,尤其对于网站通知、用户注册验证或者忘记密码重置等场景。本文将深入探讨如何在PHP环境下利用PHPMailer类库快速搭建一个高效的PHP邮件服务器。 首先,PHPMailer是一个...
### PHP 发送电子邮件详解 #### 一、PHP发送电子邮件的基础 在PHP中,发送电子邮件是一项基本功能,可以使用内置的`mail()`函数实现。但是,需要注意的是,`mail()`函数的功能依赖于服务器上的邮件发送工具(例如...
PHP开源Web邮件系统是一种基于PHP语言开发的,用于构建Web端电子邮件服务的应用程序。这种系统允许用户通过浏览器访问和管理他们的邮件,无需依赖特定的桌面邮件客户端。它通常包括一系列功能,如收发邮件、管理联系...
在这个领域,我们通常会使用PHP这样的编程语言来构建和处理电子邮件功能。以下是一些关于电子邮件开发的重要知识点: 1. **邮件协议**:电子邮件系统主要基于SMTP(Simple Mail Transfer Protocol)发送邮件,而...
PHPMailer 是一个流行的开源PHP库,专门用于处理电子邮件的发送任务。这个库支持多种协议,如SMTP、PHP mail() 函数以及sendmail,使得开发者能够灵活地选择最适合他们服务器环境的邮件发送方式。PHPMailer 适用于...
PHPMailer 是一个广泛使用的开源PHP类库,专为发送电子邮件而设计。在6.6.4版本中,它提供了强大的功能和灵活性,使得在PHP环境中处理邮件收发变得简单易行。这个类库支持多种SMTP验证方式,包括PLAIN、LOGIN、CRAM-...
在PHP中发送电子邮件是一项常见的任务,特别是在开发Web应用程序时,我们可能需要向用户发送确认邮件、通知或密码重置链接。`PHPMailer`是一个广泛使用的开源包,它为PHP提供了强大的邮件发送功能,支持SMTP验证、...
PHPMailer是一个流行的PHP库,它允许开发者通过PHP发送电子邮件。本篇文章将深入探讨如何使用PHPMailer来发送邮件以及相关的重要知识点。 首先,我们需要了解PHPMailer的基本用法。在你的项目中引入PHPMailer_v2.3...
但考虑到现代电子邮件的标准和安全性,通常会使用如PHPMailer或SwiftMailer这样的第三方库。 1. PHPMailer库的使用: PHPMailer是一个流行的PHP邮件发送库,支持HTML邮件、附件、SMTP验证等功能。要使用PHPMailer...
在PHP中实现Web收发邮件是一项常见的功能,它允许用户通过网页界面来处理电子邮件。本文将深入探讨如何使用PHP和一些流行的开源库来构建这样的系统,同时也会提及SquirrelMail,一个知名的Web邮件客户端。 首先,...