Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Проверка кода на ПХП для отправки почты... (http://forum.oszone.net/showthread.php?t=31115)

ran71me3rr0r 29-06-2004 09:49 213339

: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>";
?>

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


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


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

Prisoner 29-06-2004 13:40 213340

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 213341

ran71me3rr0r
и это весь скрипт???
а где окончание таблицы файла???

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

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

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

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

ran71me3rr0r 30-06-2004 09:20 213342

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

Vlad Drakula 30-06-2004 18:44 213343

ran71me3rr0r
ты все правильно подметил!

Prisoner 30-06-2004 18:52 213344

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

Добавлено:

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


Время: 08:18.

Время: 08:18.
© OSzone.net 2001-