Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Безопасна ли эта авторизация?
 
 автор: TanTaL91   (01.10.2009 в 22:45)   письмо автору
 
 

echo "
<form method='post' action='index.php'>
User<br>
<input type='text' name='user' maxlength=20><br>
Password<br>
<input type='password' name='pswrd' maxlength=20><br><br>
<center><input type='submit' name='authorization'></center>
</form>";

if(isset($_POST['authorization']))

{
  $user=mysql_escape_string($_POST['user']);
  $pswrd=mysql_escape_string(MD5($_POST['pswrd']));
  $nme=mysql_query("SELECT * FROM user WHERE user='$user' and password = '$pswrd'");
  if(!$nme) exit ("error");
  if(mysql_num_rows($nme)>0)
   {
   $aut = mysql_fetch_array($nme);
   $_SESSION['username'] = $aut['user'];
   $_SESSION['status'] = $aut['status'];
   $_SESSION['id'] = $aut['id'];
   echo "<html><head><META HTTP-EQUIV='REFRESH' CONTENT='1; URL=index.php'></head><html>";
   }
}

echo $_SESSION['username'];


Собственно насколько безопасно, и что поправить если что то не то... Заранее благодарен.

  Ответить  
 
 автор: cheops   (01.10.2009 в 23:49)   письмо автору
 
   для: TanTaL91   (01.10.2009 в 22:45)
 

Собственно безопасна, но может сбоить, особенно если будут включен режим магических кавычек, следует исправить строки
<?php
  $user
=mysql_escape_string($_POST['user']); 
  
$pswrd=mysql_escape_string(MD5($_POST['pswrd']));
?>

на
<?php
  $_POST
['pswrd'] = MD5($_POST['pswrd']);
  if (!
get_magic_quotes_gpc())
  {
    
$user=mysql_escape_string($_POST['user']); 
    
$pswrd=mysql_escape_string($_POST['pswrd']);
  }
?>

  Ответить  
 
 автор: Trianon   (02.10.2009 в 00:05)   письмо автору
 
   для: cheops   (01.10.2009 в 23:49)
 

>Собственно безопасна, но может сбоить, особенно если будут включен режим магических кавычек, следует исправить строки
> $user=mysql_escape_string($_POST['user']);
> $pswrd=mysql_escape_string(MD5($_POST['pswrd']));
>на
> $_POST['pswrd'] = MD5($_POST['pswrd']);
> if (!get_magic_quotes_gpc())
> {
> $user=mysql_escape_string($_POST['user']);
> $pswrd=mysql_escape_string($_POST['pswrd']);
> }

Прелесно...
Что при этом посчитает MD5()? Экранирующие слэши?
В чем сермяжный смысл ставить экранирование кавычек в шестнадцатеричной строке в зависимость от состояния магических кавычек?

А ведь недели не прошло, как разбирали magic quotes. Раскрутили вроде бы до последних винтиков. Ан нет...

  Ответить  
 
 автор: cheops   (02.10.2009 в 00:13)   письмо автору
 
   для: Trianon   (02.10.2009 в 00:05)
 

Ну коль ленитесь сами свой вариант приводить, приведу его за вас, я не гордый :)))
<?php
echo 
<form method='post' action='index.php'> 
User<br> 
<input type='text' name='user' maxlength=20><br> 
Password<br> 
<input type='password' name='pswrd' maxlength=20><br><br> 
<center><input type='submit' name='authorization'></center> 
</form>"


if(isset(
$_POST['authorization'])) 


  if (!
get_magic_quotes_gpc()) 
  {
    
$_POST['user']=stripcslashes($_POST['user']); 
    
$_POST['pswrd']=stripcslashes($_POST['pswrd']); 
  }
  
$user mysql_escape_string($_POST['user']);  
  
$pswrd MD5($_POST['pswrd']);
  
  
$nme=mysql_query("SELECT * FROM user WHERE user='$user' and password = '$pswrd'"); 
  if(!
$nme) exit ("error"); 
  if(
mysql_num_rows($nme)>0
   { 
   
$aut mysql_fetch_array($nme); 
   
$_SESSION['username'] = $aut['user']; 
   
$_SESSION['status'] = $aut['status']; 
   
$_SESSION['id'] = $aut['id']; 
   echo 
"<html><head><META HTTP-EQUIV='REFRESH' CONTENT='1; URL=index.php'></head><html>"
   } 


echo 
$_SESSION['username'];
?>

  Ответить  
 
 автор: ride   (02.10.2009 в 11:01)   письмо автору
 
   для: cheops   (02.10.2009 в 00:13)
 

if (get_magic_quotes_gpc())

  Ответить  
 
 автор: cheops   (02.10.2009 в 11:52)   письмо автору
 
   для: ride   (02.10.2009 в 11:01)
 

Да, конечно
<?php 
echo "  
<form method='post' action='index.php'>  
User<br>  
<input type='text' name='user' maxlength=20><br>  
Password<br>  
<input type='password' name='pswrd' maxlength=20><br><br>  
<center><input type='submit' name='authorization'></center>  
</form>"
;  

if(isset(
$_POST['authorization']))  

{  
  if (
get_magic_quotes_gpc())  
  { 
    
$_POST['user']=stripcslashes($_POST['user']);  
    
$_POST['pswrd']=stripcslashes($_POST['pswrd']);  
  } 
  
$user mysql_escape_string($_POST['user']);   
  
$pswrd MD5($_POST['pswrd']); 
   
  
$nme=mysql_query("SELECT * FROM user WHERE user='$user' and password = '$pswrd'");  
  if(!
$nme) exit ("error");  
  if(
mysql_num_rows($nme)>0)  
   {  
   
$aut mysql_fetch_array($nme);  
   
$_SESSION['username'] = $aut['user'];  
   
$_SESSION['status'] = $aut['status'];  
   
$_SESSION['id'] = $aut['id'];  
   echo 
"<html><head><META HTTP-EQUIV='REFRESH' CONTENT='1; URL=index.php'></head><html>";  
   }  
}  

echo 
$_SESSION['username']; 
?>

  Ответить  
 
 автор: psychomc   (02.10.2009 в 11:46)   письмо автору
 
   для: TanTaL91   (01.10.2009 в 22:45)
 

хм... а зачем эскейпировать пароль если все-равно его перед занесением в базу через md5 прогонять???

  Ответить  
 
 автор: Trianon   (02.10.2009 в 14:00)   письмо автору
 
   для: psychomc   (02.10.2009 в 11:46)
 

чтобы можно было менять md5 на что-то свое. Да хотя бы md5($pwd, 1) . Два символа дописываешь - логика рушится.

  Ответить  
 
 автор: psychomc   (02.10.2009 в 14:27)   письмо автору
 
   для: Trianon   (02.10.2009 в 14:00)
 

это что-то вроде частного случая? :)

  Ответить  
 
 автор: Trianon   (02.10.2009 в 14:47)   письмо автору
 
   для: psychomc   (02.10.2009 в 14:27)
 

именно md5 в исходном виде - что-то вроде частного случая.

  Ответить  
 
 автор: psychomc   (02.10.2009 в 15:03)   письмо автору
 
   для: Trianon   (02.10.2009 в 14:47)
 

из-за того что в случае угона базы простые пароли не сложно расшифровать?

  Ответить  
 
 автор: Trianon   (02.10.2009 в 15:13)   письмо автору
 
   для: psychomc   (02.10.2009 в 15:03)
 

не понял вопроса.

  Ответить  
 
 автор: psychomc   (02.10.2009 в 15:16)   письмо автору
 
   для: Trianon   (02.10.2009 в 15:13)
 

а всё, врубился :)
это я неправильно понял Ваш ответ 02.10.2009 в 14:00
всё правильно.....

  Ответить  
 
 автор: psychomc   (02.10.2009 в 15:22)   письмо автору
 
   для: psychomc   (02.10.2009 в 15:16)
 

хотя попробовал поэксперементировать с паролем и с различными символами после запятой без mysql_escape_string. всё вроде нормально

  Ответить  
 
 автор: Trianon   (02.10.2009 в 15:40)   письмо автору
 
   для: psychomc   (02.10.2009 в 15:22)
 

плохо экспериментировали.
Если брать пароли только из цифр, и только из первой сотни - вот Вам кучка:
3, 12, 14, 18, 21, 32, 36, 38, 42, 50, 51, 54, 59, 65, 85, 86, 91, 92, 100

  Ответить  
 
 автор: psychomc   (02.10.2009 в 16:25)   письмо автору
 
   для: Trianon   (02.10.2009 в 15:40)
 

не вижу разницы, чессказать в недоумении. напишите плиз что на входе-выходе и что ожидалось

  Ответить  
 
 автор: Trianon   (02.10.2009 в 16:54)   письмо автору
 
   для: psychomc   (02.10.2009 в 16:25)
 

И это лишь значения, фактически влияющие на результат.
Формально - больше.

for($i = 0; $i < 100; $i++)
{
  $v = md5($i, 1);
  if(mysql_escape_string($v) != $v)
      echo "$i, ";
}


1, 3, 9, 11, 12, 13, 14, 18, 21, 32, 36, 38, 42, 50, 51, 54, 56, 59, 65, 83, 84, 85, 86, 91, 92, 96, 100

  Ответить  
 
 автор: psychomc   (02.10.2009 в 17:33)   письмо автору
 
   для: Trianon   (02.10.2009 в 16:54)
 

да.
но ведь так же всё нормально
<?php
for($i 0$i 100$i++)
{
  
$h $i.',1';
  
  
$v md5($h);
 
 if(
mysql_escape_string($v) != $v)
      echo 
"$i, "
 }

  Ответить  
 
 автор: Trianon   (02.10.2009 в 17:42)   письмо автору
 
   для: psychomc   (02.10.2009 в 17:33)
 

да.
Но ведь так же - нет?
(02.10.2009 в 16:54)

Напоминаю.
Вы (02.10.2009 в 11:46) спросили - зачем?
Я отвечаю именно на этот вопрос.

  Ответить  
 
 автор: psychomc   (02.10.2009 в 17:44)   письмо автору
 
   для: Trianon   (02.10.2009 в 17:42)
 

пардон.
в общем всё Вы верно сказали. впредь буду обрабатывать пароль. я сморозил. забыл что у меня магические кавычки включены.... короче ступил

  Ответить  
 
 автор: TanTaL91   (02.10.2009 в 22:09)   письмо автору
 
   для: psychomc   (02.10.2009 в 17:44)
 

Огромное всем вам спасибо, за ваше внеание к моему вопросу. Я очень рад что хотя бы раз сделал что то без особо сильных косяков =)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования