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