slovoblydie
@slovoblydie
it / web / photography

Передача пароля в открытом виде из формы input type password?

Уважаемы коллеги, it-специалисты, программисты и просто хорошие люди, приветствую!
Очень много читал вопросов и ответов на тостере. И вот наступил момент, когда у самого созрел вопрос, на который хотелось бы услышать Ваше ответ/мнение.
К примеру, нашел скрипт авторизации на сайте, я так полагаю довольно распространенная конструкция на php:
<?php
# Функция для генерации случайной строки 
function generateCode($length=6) { 
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789"; 
$code = ""; 
$clen = strlen($chars) - 1;   
while (strlen($code) < $length) { 
$code .= $chars[mt_rand(0,$clen)];   
} 
return $code; 
} 
  
# Если есть куки с ошибкой то выводим их в переменную и удаляем куки
if (isset($_COOKIE['errors'])){
$errors = $_COOKIE['errors'];
setcookie('errors', '', time() - 60*24*30*12, '/');
}
if(isset($_POST['submit'])) 
{ 
# Вытаскиваем из БД запись, у которой логин равняеться введенному 
$names = mysql_fetch_assoc(mysql_query("SELECT id, name, password FROM `users` WHERE `name`='".mysql_real_escape_string($_POST['name'])."' LIMIT 1")); 
# Сравниваем пароли 
if($names['password'] === md5(md5($_POST['password']))) 
{ 
# Генерируем случайное число и шифруем его 
 $hash = md5(generateCode(10)); 
 # Записываем в БД новый хеш авторизации и IP 
mysql_query("UPDATE users SET hash='".$hash."' WHERE id='".$names['id']."'") or die("MySQL Error: " . mysql_error()); 
       
 # Ставим куки 
 setcookie("id", $admins['id'], time()+60*60*24*30); 
 setcookie("hash", $hash, time()+60*60*24*30); 
 # Переадресовываем браузер на страницу проверки нашего скрипта 
 header("Location: admin.php"); exit(); 
 } 
 else  { print "Вы ввели неправильный логин/пароль<br>";  } 
} 
?>
  <form method="POST"> 
  Логин <input name="name" type="text"><br><br> 
  Пароль <input name="password" type="password"><br><br> 
  <input name="submit" type="submit" value="Войти"> 
  </form>
 
<?php
# Проверяем наличие в куках номера ошибки
if (isset($errors)) {print '<h4>'.$error[$errors].'</h4>';}
?>

Внимание вопрос: В форме мы отправили пароль в ОТКРЫТОМ виде, и все манипуляции с ним по части проверок и шифрования проходят уже ПОСЛЕ того как эти данные передались на сервер... Т.е. злоумышленник может перехватить его. Все верно я вижу по коду? Ну тут естественно, если это не https соединение. И как Вам кстати сам скриптик этот, юзабельно?
Или ткните носом где не прав. Ну и как там говорится, сильно уж не пинайте. Заранее благодарен.
  • Вопрос задан
  • 365 просмотров
Пригласить эксперта
Ответы на вопрос 2
opium
@opium
Просто люблю качественно работать
да может если не хттпс
ну хотите юзайте хотите нет там 10 строк кода.
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
Да, без https можно поймать пароль в открытом виде. Я вот утром видел сайт, который предложил заполнить платежные данные без https. А код? Я не знаю.Может в учебниках по PHP учат класть в один файл и PHP, и SQL, и html, а я тут по глупости негодую видя подобное.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы