Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP邮件脚本的安全问题,没有用户输入文件_Php_Security_Email - Fatal编程技术网

PHP邮件脚本的安全问题,没有用户输入文件

PHP邮件脚本的安全问题,没有用户输入文件,php,security,email,Php,Security,Email,我有一个php文件,每次加载时都会给我发送一封电子邮件。没有用户输入字段,它不是联系人表单或任何其他表单。这只是一个重定向php文件,我想在每次加载时接收电子邮件。我在其中包含了以下php邮件功能,不知道它是否存在任何安全问题(因为没有用户输入字段,我希望我可以这样离开它): 如果电子邮件包含您完全控制的静态内容,则可能存在哪些安全问题。不管怎样,我相信如果您只在本地文件或数据库中跟踪文件加载情况会更好。祝你好运:P从功能角度来看,这是完全安全的。您的电子邮件无法更改 然而,如果一个人决定欺骗你

我有一个php文件,每次加载时都会给我发送一封电子邮件。没有用户输入字段,它不是联系人表单或任何其他表单。这只是一个重定向php文件,我想在每次加载时接收电子邮件。我在其中包含了以下php邮件功能,不知道它是否存在任何安全问题(因为没有用户输入字段,我希望我可以这样离开它):


如果电子邮件包含您完全控制的静态内容,则可能存在哪些安全问题。不管怎样,我相信如果您只在本地文件或数据库中跟踪文件加载情况会更好。祝你好运<代码>:P

从功能角度来看,这是完全安全的。您的电子邮件无法更改

然而,如果一个人决定欺骗你,他可以在很短的时间内给你发送数量惊人的电子邮件。您的主机或ISP将为此而生气

您可以通过排队来避免这种情况。获取数据库或文件,保存调用页面的次数和发送最后一封电子邮件的时间

如果调用了脚本,并且上次发送的电子邮件是x分钟前,则可以向自己发送消息,说明该页面已被调用x次。然后,清空数据库并重新开始计数:)


这里有一个脚本可以帮助您开始(尚未测试)


非常感谢您的回答和建议。我怀疑有人会欺骗我,因为网络上没有指向此文件的链接,但只在一个特定位置,受密码保护,只有一个人可以访问,因此此文件每年仅加载2,3次,但对我来说非常重要的是,加载后会立即通知我。谢谢@user3021391哦,在这种情况下,您实际上不必检查它最后一次发送的时间。我仍然为您或任何可能发现此问题的人编写了一个脚本:)
   $to      = 'myemail@gmail.com';
$subject = 'the file is loaded';
$message = 'the file loaded, check it out';
$headers = 'From: webmaster@mywebsite.com' . "\r\n" .
    'Reply-To: webmaster@mywebsite.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
// Duration in seconds
$duration = 60 * 15;

$now = time();
$file = 'tmp.json';
$json = json_decode(file_get_contents($file));

array_push($json['calls'], $now);

// It appears it's time to send the content
if($json['sent'] + $duration > $now) {
    $to      = 'myemail@gmail.com';
    $subject = 'the file is loaded';
    $headers = 'From: webmaster@mywebsite.com' . "\r\n" .
        'Reply-To: webmaster@mywebsite.com' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

    $message = '';

    // Generate message
    foreach($json['calls'] as $c) {
        $message .= sprintf("File loaded at: %s\r\n", date('r', $c));
    }

    if(mail($to, $subject, $message, $headers)) {
        // Reset the file but ONLY if the mail was sent
        file_put_contents($file, json_encode(array(
            'calls' => array(),
            'sent'  => $now
        )));
    }
} else {
    file_put_contents($file, json_encode($json));
}