【问题标题】:How to test for email injection如何测试电子邮件注入
【发布时间】:2011-10-10 21:13:03
【问题描述】:

我正在使用 php 邮件功能,我有一个表单,其中包含姓名字段、电话字段、电子邮件字段和消息字段,这是一个文本区域。电子邮件字段(连同姓名和电话字段)显示在消息中,不用于向该地址发送电子邮件。 To: 字段和 subject: 字段和 From: 标头在脚本中是静态的,并且设计为始终相同。

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

我尝试过投入田野 %0ATo:mysecondemailaddress@provider.com 和 %0ACc:mysecondemailaddress@provider.com,但电子邮件根本没有发送到正确的电子邮件地址。我只是想知道执行此操作的正确方法是什么,以及当我使用预防性方法(例如识别字符串并删除它们或拒绝发送电子邮件)时,我还应该注意哪些字符,例如 % ?

【问题讨论】:

  • 您好,您有什么理由不使用验证码吗?垃圾邮件机器人可以抓取您的网站、查看联系表单并手动将发布数据发送到表单的操作。然后,它将能够向收到表单联系信息的任何人发送垃圾邮件。如果您想自己玩这个,您可以使用Snoopy 或任何其他库设置测试,以便您轻松地将发布数据发送到表单。如果您对收件人进行硬编码或接受文件上传,我认为您特别容易受到电子邮件注入的影响。
  • 我计划使用验证码来防止垃圾邮件机器人发送随机表单,但我想做的是保护自己免受恶意用户的侵害,但无论如何感谢您的回答,我会检查 Snoopy。
  • 我认为电子邮件注入是指标头注入。 php mail function 有一些关于额外标题如何进入电子邮件的文档。
  • 这篇文章并没有真正解决通过表单输入注入标题

标签: php email filter code-injection


【解决方案1】:

用表格直接输入注入效果好像不是很好。我正在使用the following 来测试我正在组合的邮件程序,它会发布脚本中的数据。 $postData 必须修改以适合您的形式。这只是密件抄送“受害者”:

<?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;
    }

?>

【讨论】:

    猜你喜欢
    • 2019-11-23
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多