PDA

Показать полную графическую версию : Проверка кода на ПХП для отправки почты...


ran71me3rr0r
29-06-2004, 09:49
:oszone:ВрЕмЕчКо ДоБрЕньКоЕ п0лЬ3оВаtелям сего замечательного ресурса!
Прошу знающих ПХП дать совет/рекомендацию.
Вот ниже дан код, сделанный под заказ.
Есть несколько моментов которые
мне чайникуПХП здесь завуалированы.

1. Соответсвует ли код - безопастности,
"....слышал что метод POST легко
поддаётся деструктивному коду, в
смысле конструция этого метода + пару
тройку команд", так ли это? (если не
правильно пояснил, заранее приношу
извинения, пересмотрю при акценте на
этот пункт)

2. Почему то нет пути для сендМаила?
Но тем не менее скрипт рабоает
:confused: Интересно:confused:

задаю все эти вопросы здесь, а не девелоперу, т.к. руководство потеряло
контакт с ним:oszone:

:shuffle: Вот исходник на PHP, вообще буду признателен за аналитику по коду:
)

<body bgcolor="#cc9966" text="#999999" link="#FFFFFF" vlink="#FFFF00" alink="#CCCCCC">
<?
print"
<FORM method=\"POST\" action=\"send.php?varx=send\">

<P>Ваше Имя:<br>
<INPUT type=\"text\" name=\"Name\" size=30>
</p>

<P>Ваш e-mail:<br>
<INPUT type=\"text\" name=\"Email\" size=30>
</p>

<P>Сообщение:<br>
<textarea name=\"Message\" cols=30 rows=5></textarea>
</p>

<INPUT type=\"submit\" value=\"Отправить\">

</FORM>";

switch($varx) :
default :
print "<table width= cellpadding=0 cellspacing=0 border=0 align=center>";

break;
case("send") :

if ($Email == "") {print "<script language=JavaScript>window.alert('Введите e-mail!');</script>"; exit;}
if ($Message == "") {print "<script language=JavaScript>window.alert('Введите текст!');</script>"; exit;}
if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $Email) and $Email != "") {print "<script language=JavaScript>window.alert('Не правельный E-mail');</script>"; exit;}
$er = 1;

*$ip = $REMOTE_ADDR;
*$date = date("d.m.Y");

*$info = "Name:\t$Name\n";
*$info .= "E-Mail:\t$Email\n";
*$info .= "Message:\t$Message\n\n";
*
*$send_to = "test@test.ru"; * * * * * *
*$subject = "Сообщение $date"; * * * * *
*
*$headers = "From: Ip адрес: $ip: \n";
*$headers .= "Reply-To: $email\n\n";
*
*$send = mail($send_to, $subject, $info, $headers);
*if($send == 1)
*{
*
*print ("<script language=JavaScript>window.alert('Отправлено $date');</script>");

*}
*else
*
*print ("<script language=JavaScript>window.alert('Ошибка');</script>");

break;
endswitch;
print "<center><p><font size=\"1\" color=\"#7D7D7D\"></font></p><center>";
?>

Исправлено: ran71me3rr0r, 9:51 29-06-2004


Исправлено: ran71me3rr0r, 9:53 29-06-2004


Исправлено: ran71me3rr0r, 9:55 29-06-2004

Prisoner
29-06-2004, 13:40
1) Можно генерировать POST запросы бочками, тут уж фильтрация и только фильтрация.
2) А скрипту (по крайней мере PHP скрипту) о пути к sendmail'у знать и не надо, на это есть знания у модуля или cgi реализации самого интерпритатора.

Много странностей... к примеру? Извольте:
1) Последний print в коде.
2) Если varx != send, то выводится заголовок таблицы и все...
3) Судя по коду юзабилити никакого нет. Кому приятно, что после отправки формы будут выдавать сообщения с диагностическими сообщениями? Причем жавой...
4) Сама отправка письма - простейшая.
5) \n\n тоже странно выглядит, я больше к \r\n привык
6) Нефильтрованные данные позволят мне добавить в переменную $headers такие поля как Bcc и Cc, что позволит использовать скрипт как точку рассылки спама по нужным адресам.
7) Даже без п. 6 можно воспользоваться скриптом как мейл-бомбером - зафлудить мыльницу test@test.ru

В общем, скрипт писАлся новичком...

Vlad Drakula
29-06-2004, 19:34
ran71me3rr0r
и это весь скрипт???
а где окончание таблицы файла???

честно говоря то что использован eregi а на preg_match не очень хорошо, т.к. это не очень распространенный тип регулярных выражений, к тому же он отрубает часть разрешенных мыл!

например - АДРЕй[AT]vz.net
между прочим это разрешенное мыло!
и мыло на такие адреса ходят, я сам проверял!

Prisoner
там есть страшный регексп который проверяет мыло на валидность он ничего не нужного не пропустит!

ran71me3rr0r
в коне не определена переменная $ip, возможно на локалхосте у программиста она и определена, но я на 99% уверен, что у твоего хостера другие настройки!

ran71me3rr0r
30-06-2004, 09:20
Vlad Drakula, Prisoner
большое спасибо за своевременные и существенные ответы. Мне как чайникуПХП одно только понятно, из всех вышеперечисленных "магических слов, заклинаний", что данный скрипт вы бы не советовали устанавливать на инетПредставительсве фирмы.
:biglaugh:

Vlad Drakula
30-06-2004, 18:44
ran71me3rr0r
ты все правильно подметил!

Prisoner
30-06-2004, 18:52
Vlad Drakula
Мда, ты прав. Буказоид в конце паттерна не заметил :\
ran71me3rr0r
Мягко сказано - не советовал бы :). Ибо основательно надо подходить к таким вещам...

Добавлено:

Vlad Drakula, уже третий топик я открываю - твоего поста нет, отправляю ответ - твой пост перед моим :)




© OSzone.net 2001-2012