我有一个php文件,每次加载时都会向我发送一封电子邮件。没有用户输入字段,它不是联系表单或任何其他表单。它只是一个重定向的php文件,我希望每次加载时都会收到电子邮件。我在其中包含了以下php邮件功能,并想知道它是否存在任何安全问题(因为没有用户输入字段,我希望我可以这样离开它):
$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);
答案 0 :(得分:0)
对于具有您完全控制的静态内容的电子邮件,可能存在哪些安全问题。无论如何,我相信如果你只是在本地文件或数据库中跟踪文件加载会更好。祝好运! :P
答案 1 :(得分:0)
从功能角度来看,这是非常安全的。您的电子邮件无法更改。
然而,如果一个人决定哄骗你,他可以在很短的时间内向你发送大量的电子邮件。您的主机或ISP会对此感到生气。
您可以通过排队来避免这种情况。获取数据库或文件,保存调用页面的次数以及发送最后一封电子邮件的时间。
如果脚本被调用并且最后发送的电子邮件是x分钟前,您可以向自己发送一条消息,表明该页面已被调用x次。然后,您只需清空数据库并重新开始计数:)
这是一个启动(尚未测试)的脚本
// 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));
}