La2Bash 87 Опубликовано 13 апреля, 2013 (изменено) Всем привет Кто хорошо шарит в php, посмотрите на наличие возможных ошибок (в плане безопасности, оптимизации) <?php if (!defined(SECURED)) {die("<meta http-equiv='refresh' content='0; URL=http://{$_SERVER['HTTP_HOST']}/404'>");} function email_check($email) { if (!preg_match("/^(?:[a-z0-9]+(?:[-_.]?[a-z0-9]+)?@[a-z0-9_.-]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i",trim($email))) { return false; } else return true; } echo (' <script type="text/javascript" src="/template/form.js"></script> <form action="" method="POST" onsubmit="return checkform(this)" name="reg"> <div id="page_title"><h2>РЕГИСТРАЦИЯ</h2></div> '); $newlogin=$_POST['newlogin']; $newpassword=$_POST['newpassword']; $newpassword2=$_POST['newpassword_check']; $newmail=$_POST['newmail']; $newnick=$_POST['newnick']; if ($_POST['doact'] =='reg') { if(strlen($newlogin) < 5 or strlen($newlogin) > 16) { $ok=false; $mes='Длинна поля Логин не должна быть менее 5 символов и не должна превышать 16.'; } else if ( !eregi("^[a-zA-Z0-9_-]+$", $newlogin)) { $ok=false; $mes='Поле Логин может содержать только символы a-z,A-Z,0-9.'; } else if(strlen($newpassword) < 5 or strlen($newpassword) > 16) { $ok=false; $mes='Длинна поля пароль должна быть не длиннее 25 символов и не короче 5.'; } else if($newpassword <> $newpassword2) { $ok=false; $mes='Введенные пароли не совпадают.'; } else if(strlen($newmail) < 5 or strlen($newmail) > 25) { $ok=false; $mes='Длинна поля E-Mail должно быть не длиннее 25 символов и не короче 5.'; } else { $ok=true; } if (!$ok) { echo(' <center> '.$mes.'<br> <input type="submit" value="Повторить попытку"> </center> <input type="hidden" name="newlogin" value="'.$newlogin.'"> <input type="hidden" name="newmail" value="'.$newmail.'"> '); } else { if ($connect) { $newlogin=antiinjection($newlogin); $newpassword=antiinjection($newpassword); $newpassword_check=antiinjection($newpassword_check); $newmail=antiinjection($newmail); $good_reg=true; $check_account_query=mysql_query('select login from accounts where login="'.$newlogin.'"',$connect); $check_account=mysql_num_rows($check_account_query); if ($check_account) { $good_reg=false; $mes='Данный логин уже кто то использует, пожалуйста выберите другой.'; } $check_mail_query=mysql_query('select email from accounts where email="'.$newmail.'"',$connect); $check_mail=mysql_num_rows($check_mail_query); if($check_mail) { $good_reg=false; $mes='Данный E-Mail уже кто то использует, пожалуйста выберите другой.'; } if(!email_check($newmail)) { $good_reg=false; $mes='Вы допустили ошибку при вводе E-Mail, пожалуйста попробуйте снова.'; } if ($good_reg) { // именно рег (если акка еще нету) $newpassword=base64_encode(pack('H*', sha1(utf8_encode($newpassword)))); mysql_query('insert into accounts (login,password,email) values ("'.$newlogin.'","'.$newpassword.'","'.$newmail.'")',$connect); if (mysql_errno()=='0') { echo ( ' <center> <font size=20>Поздравляем!</font> <br><br><br> <font size=4>Аккаунт успешно зарегистрирован.</font> <br> Ваш логин: '.$newlogin.';<br> Ваш E-Mail: '.$newmail.';<br> На ваш почтовый адрес отправлено письмо с дальнейшими указаниями по активации аккаунта.<br> <br> <a href="/?page=files">Перейти в раздел файлы</a> </center> '); $subject='Регистрация аккаунта - '.$newlogin.' | L2'; $mail_message = ' <center> <font size=7 color=green>Поздравляем!</font><br> <font size=5>Вы успешно зарегистрировали аккаунт!</font><br> </center><br> <b>========== [ АКТИВАЦИЯ АККАУНТА ] ==========</b><br> Автоматическая активация прошла успешно. <br> <b>========== [ ИНФОРМАЦИЯ ОБ АККАУНТЕ ] ==========</b><br> <b>Логин:</b> '.$newlogin.'<br> <b>Пароль:</b> Указаный вами при регистрации. <br> <b>Запомните! Администрация никогда не просит данных от вашего аккаунта!</b><br> <center><font size=4 color=green>Желаем приятной игры!</font><br> </center> '; $headers= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=cp1251\r\n"; $headers .= "From: <ololo>\r\n"; mail($newmail, $subject, $mail_message, $headers); } else echo(mysql_error()); } else { echo(' <center> '.$mes.'<br> <input type="submit" value="Повторить попытку"> </center> <input type="hidden" name="newlogin" value="'.$newlogin.'"> <input type="hidden" name="newmail" value="'.$newmail.'"> '); } } else die ('Регистрация временно не доступна, приносим наши извенения.'); } } else { if($CONFIG['reg_open'] && $mysqlserv) { ?> Для игры на нашем сервере вам понадобится игровой аккаунт.<br> При регистрации вы автоматически соглашаетесь с правилами проекта. <br><br> <font size="5">Логин</font><br><br> <input maxlength='16' size='25' type='text' name='newlogin' value='<?php echo($_POST['newlogin'])?>' style="text-align: center; "> <br> <font size="2">Максимальная длина - 16 символов, чем сложнее логин тем меньше шансов взлома аккаунта.</font> <br><br> <font size="5">Пароль</font><br><br> <input maxlength='16' size='25' type='password' name='newpassword' style="text-align: center; "> <br> <font size="2">Максимальная длина - 16 символов, помните что администрация никогда не просит данные от вашего аккаунта.</font> <br><br> <font size="5">Повторите пароль</font><br><br> <input maxlength='16' size='25' type='password' name='newpassword_check' style="text-align: center; "> <br> <font size="2">Введите пароль ещё раз.</font> <br><br> <font size="5">E-Mail</font><br><br> <input maxlength='25' size='25' type='text' name='newmail' value='<?php echo($_POST['newmail'])?>' style="text-align: center; "> <br> <font size="2">Введите ваш почтовый адрес, на него будет выслано письмо с дальнейшими инструкциями по регистрации аккаунта.</font> <br> <center><input size='16' type='image' name='ok' src="/template/buttons/reg.png" value='ok'></center> <input type='hidden' name='doact' value='reg' > <?php } else { echo $CONFIG['regoff_message']; } } ?> </form> Изменено 13 апреля, 2013 пользователем Mister Coder Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jumper 551 Опубликовано 13 апреля, 2013 else if(strlen($newpassword) < 5 or strlen($newpassword) > 16) раз уж в логе о 25 говоришь, то и указывай 25) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 13 апреля, 2013 А в плане безопасности? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
byNo0k 10 Опубликовано 17 апреля, 2013 $newlogin=$_POST['newlogin']; $newpassword=$_POST['newpassword']; $newpassword2=$_POST['newpassword_check']; $newmail=$_POST['newmail']; $newnick=$_POST['newnick']; ахах, супер Вот тут профильтруй my_esc юзай. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
byNo0k 10 Опубликовано 17 апреля, 2013 $newlogin=antiinjection($newlogin); $newpassword=antiinjection($newpassword); $newpassword_check=antiinjection($newpassword_check); $newmail=antiinjection($newmail); дай и вот тут, antiinjection - это у тебя функция на фильтрацию? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты