Ms
Новичок
Потенциальная дыра-2: Отправка письма в слежбу поддержки
Передположим, на сайте суущесвует форма для отправки писем в службу поддержки.
Форма распроложена по адресу: www.site.ru/mail/
Неважно, каким методом отсылаются данные, ибо хочется рассмотреть оба варианта.
Выгядит это слудующим образом:
А теперь собственно, о проблемме этого движка.
1) Если данные отсылаются мтодом GET, то [email protected] может быть очень скоро завален сотнями тысяч писем следующим скриптом:
Короче говоря, отсылать письмо методом GET - утопия.
2) Если данные отправляются методом POST, то:
a) Возможно ли как-либо послать данные методом POST, любым другим путём, кроме формы на web-странице? Причём, рассматриваются не только
возможности PHP, но и всей POST-системы в целом.Если да, то это не есть очень хорошо.
б) Если можно, то как сделать так, чтобы не получилось приблизительно такой же картины, как с методом GET?
Передположим, на сайте суущесвует форма для отправки писем в службу поддержки.
Форма распроложена по адресу: www.site.ru/mail/
Неважно, каким методом отсылаются данные, ибо хочется рассмотреть оба варианта.
Выгядит это слудующим образом:
PHP:
<form>
Текст письма:<br />
<textarea name="message"></textarea>
<input type="submit">
</form>
<?php
if(!empty($_REQUEST['message'])){
$headers = "MIME-Version: 1.0\r\n";
$headers.="Content-Type: text/plain; charset=windows-1251\r\n";
$headers .= "Date: ".date("m.d.Y (H:i:s)",time())."\r\n";
$headers .= "From: ГОСПОДИН N\r\n";
mail('[email protected]','ЗПисьмо в службу поддержки',$_REQUEST['message'],$headers);
}
?>
А теперь собственно, о проблемме этого движка.
1) Если данные отсылаются мтодом GET, то [email protected] может быть очень скоро завален сотнями тысяч писем следующим скриптом:
PHP:
<?php
for($i=0;$i<=100000; $i++){
file_get_contents('http://www.site.ru/mail/?message=Дыра в защите сайта');
//умышленно не пишу urldecode
}
?>
2) Если данные отправляются методом POST, то:
a) Возможно ли как-либо послать данные методом POST, любым другим путём, кроме формы на web-странице? Причём, рассматриваются не только
возможности PHP, но и всей POST-системы в целом.Если да, то это не есть очень хорошо.
б) Если можно, то как сделать так, чтобы не получилось приблизительно такой же картины, как с методом GET?