Php 如何测试电子邮件注入

Php 如何测试电子邮件注入,php,email,filter,code-injection,Php,Email,Filter,Code Injection,我使用的是php邮件函数,我有一个表单,其中有name字段、phone字段、email字段和message字段,这是一个文本区域。电子邮件字段(以及姓名和电话字段)显示在消息中,不用于向该地址发送电子邮件。To:fields和subject:fields以及From:header在脚本中是静态的,并且设计为始终相同 我最近尝试在我自己的脚本中加入电子邮件,这样我就可以知道我的预防措施是否有效 我试着在田里种些蔬菜 %0ATo:mysecondemailaddress@provider.com还有

我使用的是php邮件函数,我有一个表单,其中有name字段、phone字段、email字段和message字段,这是一个文本区域。电子邮件字段(以及姓名和电话字段)显示在消息中,不用于向该地址发送电子邮件。To:fields和subject:fields以及From:header在脚本中是静态的,并且设计为始终相同

我最近尝试在我自己的脚本中加入电子邮件,这样我就可以知道我的预防措施是否有效

我试着在田里种些蔬菜
%0ATo:mysecondemailaddress@provider.com还有%0ACc:mysecondemailaddress@provider.com,但电子邮件甚至根本没有发送到正确的电子邮件地址。我只是想知道什么是正确的方法来做到这一点,以及当我使用预防性的方法,如识别字符串,删除它们或拒绝发送电子邮件时,我还应该注意哪些字符,如%等

使用表单直接进入注射剂看起来效果不太好。我用它来测试一个我正在组装的邮件程序,它发布来自脚本的数据。必须修改
$postData
,以适合您的表单。这只是BCCs的“受害者”:

<?php

    $postData = 
        'contactname=Lord+Sauron&'.
        'email=darklord@ciplit.com.au%0ABcc:frodo@ciplit.com.au'.
        '&message=Sorry+about+that+whole+ring+thing.+No+hard+feelings%3F';

    $url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/onetrueformmailer.php';

    $result = do_post_request($url, $postData);

    echo($result);




    // http://wezfurlong.org/blog/2006/nov/http-post-from-php-without-curl/
    function do_post_request($url, $data, $optional_headers = null) {
        $params = array('http' => array(
            'method' => 'POST',
            'content' => $data
        ));
        if ($optional_headers !== null) {
            $params['http']['header'] = $optional_headers;
        }
        $ctx = stream_context_create($params);
        $fp = @fopen($url, 'rb', false, $ctx);
        if (!$fp) {
            throw new Exception("Problem with $url, $php_errormsg");
        }
        $response = @stream_get_contents($fp);
        if ($response === false) {
            throw new Exception("Problem reading data from $url, $php_errormsg");
        }
        return $response;
    }

?>

使用表单直接输入注入看起来效果不太好。我用它来测试一个我正在组装的邮件程序,它发布来自脚本的数据。必须修改
$postData
,以适合您的表单。这只是BCCs的“受害者”:

<?php

    $postData = 
        'contactname=Lord+Sauron&'.
        'email=darklord@ciplit.com.au%0ABcc:frodo@ciplit.com.au'.
        '&message=Sorry+about+that+whole+ring+thing.+No+hard+feelings%3F';

    $url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/onetrueformmailer.php';

    $result = do_post_request($url, $postData);

    echo($result);




    // http://wezfurlong.org/blog/2006/nov/http-post-from-php-without-curl/
    function do_post_request($url, $data, $optional_headers = null) {
        $params = array('http' => array(
            'method' => 'POST',
            'content' => $data
        ));
        if ($optional_headers !== null) {
            $params['http']['header'] = $optional_headers;
        }
        $ctx = stream_context_create($params);
        $fp = @fopen($url, 'rb', false, $ctx);
        if (!$fp) {
            throw new Exception("Problem with $url, $php_errormsg");
        }
        $response = @stream_get_contents($fp);
        if ($response === false) {
            throw new Exception("Problem reading data from $url, $php_errormsg");
        }
        return $response;
    }

?>


Hiya,你为什么不使用验证码?spambot可以抓取您的站点,查看联系人表单,并手动向表单的action发送post数据。然后,它将能够垃圾邮件谁将收到的形式联系信息。如果您想自己使用它,您可以设置一个测试或任何其他库,使您能够轻松地将post数据发送到表单。在我看来,你并不特别容易受到电子邮件的攻击,如果你对收件人进行硬编码或接受文件上传。我计划使用captcha来防止垃圾邮件发送随机表单,但我正在尝试保护自己免受恶意用户的攻击,但无论如何,谢谢你的回答,我会检查史努比。我想通过电子邮件注入,你指的是页眉注入。php有一些文档说明了如何将额外的标题输入到电子邮件中。这篇文章并没有真正解决通过表单输入注入标题的问题。Thoughya,有什么理由不使用验证码吗?spambot可以抓取您的站点,查看联系人表单,并手动向表单的action发送post数据。然后,它将能够垃圾邮件谁将收到的形式联系信息。如果您想自己使用它,您可以设置一个测试或任何其他库,使您能够轻松地将post数据发送到表单。在我看来,你并不特别容易受到电子邮件的攻击,如果你对收件人进行硬编码或接受文件上传。我计划使用captcha来防止垃圾邮件发送随机表单,但我正在尝试保护自己免受恶意用户的攻击,但无论如何,谢谢你的回答,我会检查史努比。我想通过电子邮件注入,你指的是页眉注入。php提供了一些文档,说明了如何在电子邮件中添加额外的标题。不过,本文并没有真正解决通过表单输入向标题中注入的问题