Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/22: Рейтинг темы: голосов - 22, средняя оценка - 4.68
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237

Безопасная форма авторизации

09.10.2014, 21:26. Показов 4256. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос такой. Является ли приведенная ниже форма, полностью безопасной. Если он не является безопасной, подскажите пожалуйста, что нужно сделать, чтобы она стала полностью безопасной.
Сама форма авторизации:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<html>
<head>
<meta charset="utf-8" />
<title>Administrator</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript" src="php/capha/cap.js"></script>
<link href="php/panel/css/bootstrap.css" rel="stylesheet">
<link href="php/panel/css/bootstrap-responsive.css" rel="stylesheet">
<link href="php/panel/css/style.css" rel="stylesheet">
</head>
<body>
    <form method="POST" action="php/capha/validator.php" class="form">
        <div class="form-group has-error">
            <input type="text" name="login" class="form-control"  id="inp1" placeholder="Введите логин"/>
            <input type="password" name="password" class="form-control" id="inp2" placeholder="Введите пароль"/>
        </div>
        <div class="cap">
            <?php 
                include('php/capha/index.php');
            ?>
        </div>
        <input type="submit" class="btn btn-primary " value="Войти" name="knop" id="but"/>
    </form>
</body>
<html>
Скрипт который принимает параметры переданные из формы, и проверяющий их на соответствие параметрам взятым из базы:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
header('Content-Type: text/html; charset=utf-8');
include('db.php');
session_start();
 
    $login=md5(md5($_POST['login']));
    $password=md5(md5($_POST['password']));
    $enter=$_POST['knop'];
    $exit=$_POST['exit'];
    if(isset($enter)){
        $res=mysqli_query($link,'SELECT password, name, hash FROM t_users WHERE name="'.$login.'"');
        $row=mysqli_fetch_assoc($res);
        if($row['password']==$password && $row['password']!==null){
            $_SESSION['user_id'] = $row['hash'];
            SetCookie ('login', $login);
            SetCookie ('password', $password);
                    header("Location: ../panel/index.php");
                }else{
            echo 'Вы ввели не верный логин\пароль';
        }
    }
    if(isset($exit)){
        SetCookie ('login', '');
        SetCookie ('password', '');
        unset($_SESSION['user_id']);
        header("Location: ../../index.php"); exit();
    }
?>
Сценарий формирующий капчу:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
  $letters = 'abcdefgkijklmnopqrstuvwxyz'; // алфавит
 
  $caplen = 6; //длина текста
  $width = 120; $height = 40; //ширина и высота картинки
  $font = 'comic.ttf';//шрифт текста
  $fontsize = 14;// размер текста
 
  header('Content-type: image/png'); //тип возвращаемого содержимого (картинка в формате PNG) 
 
  $im = imagecreatetruecolor($width, $height); //создаёт новое изображение
  imagesavealpha($im, true); //устанавливает прозрачность изображения
  $bg = imagecolorallocatealpha($im, 0, 0, 0, 127); //идентификатор цвета для изображения
  imagefill($im, 0, 0, $bg); //выполняет заливку цветом
  
  putenv( 'GDFONTPATH=' . realpath('.') ); //проверяет путь до файла со шрифтами
 
  $captcha = '';//обнуляем текст
  for ($i = 0; $i < $caplen; $i++)
  {
    $captcha .= $letters[ rand(0, strlen($letters)-1) ]; // дописываем случайный символ из алфавила 
    $x = ($width - 20) / $caplen * $i + 10;//растояние между символами
    $x = rand($x, $x+4);//случайное смещение
    $y = $height - ( ($height - $fontsize) / 2 ); // координата Y
    $curcolor = imagecolorallocate( $im, rand(0, 100), rand(0, 100), rand(0, 100) );//цвет для текущей буквы
    $angle = rand(-25, 25);//случайный угол наклона 
    imagettftext($im, $fontsize, $angle, $x, $y, $curcolor, $font, $captcha[$i]); //вывод текста
  }
 
  // открываем сессию для сохранения сгенерированного текста
  session_start();
  $_SESSION['capcha'] = $captcha;
 
  imagepng($im); //выводим изображение
  imagedestroy($im);//отчищаем память
 
?>
Заранее спасибо за помощь!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.10.2014, 21:26
Ответы с готовыми решениями:

Безопасная передача данных при авторизации
Где безопаснее всего хранить данные при авторизации и регистрации?Нужно ли их кодировать?

Безопасная форма отправки отзывов. Как вы это делаете ?
есть форма отправки отзывов на сайте. ajax запросом отправляю в файл post.php , который хватает данные и загоняет их в базу mysql. ...

Регистрационная форма и форма авторизации
Здравствуйте! Есть готовые файлы, которые работают как регистрационная форма на отдельном html-документы. Однако мне нужно связать их...

4
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
10.10.2014, 04:12
Лучший ответ Сообщение было отмечено mihon1 как решение

Решение

Я не гуру в РНР, но заметил $login=md5(md5($_POST['login']));
ИМХО Вы намудрили... У Вас похоже нет реальных имен юзеров. А md5 не гарантирует полной уникальности. Вдруг какой-нибудь "Федя1235" и "mihon1" выдадут одинаковый хеш. К тому-же Вы теряете некоторые возможности - например поиск юзера по имени и вывод юзеров, которые сейчас на сайте.
Думаю проще только обезопасить логин от спецсимволов.

Остальное - не знаю... (опыта маловато)
1
 Аватар для KSiS
26 / 26 / 16
Регистрация: 03.06.2013
Сообщений: 138
10.10.2014, 11:05
Форма может и безопасна. Но система нет.

По идее безопасна, но безопасность сделана каким-то костылем.

И кстати, у вас будут Notice из за $exit=$_POST['exit'];
1
 Аватар для xadjek
36 / 36 / 14
Регистрация: 05.06.2011
Сообщений: 306
10.10.2014, 17:01
Цитата Сообщение от Tester64 Посмотреть сообщение
md5 не гарантирует полной уникальности. Вдруг какой-нибудь "Федя1235" и "mihon1" выдадут одинаковый хеш
недавно читал статью на эту тему(пруф не скину т.к. не помню уже где это было), так там доказали что коллизия в md5 практически нереальная и автор темы будет счастливчиком если у него такое произойдет
0
Software Engineer
 Аватар для Custos
328 / 328 / 54
Регистрация: 23.09.2014
Сообщений: 976
10.10.2014, 17:11
Господи... откуда такая наркомания берется? Для кого придумали prepared statements ?

http://habrahabr.ru/post/137664/

P. S. В mysqli тоже реализовано prepared statements
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.10.2014, 17:11
Помогаю со студенческими работами здесь

Форма авторизации
Вот написал функцию для авторизации, но что то не выдает &lt;?php function login($login, $password) { $file =...

форма авторизации
Здравствуйте,не могли бы вы помочь с формой авторизации. Вот код: &lt;form action=&quot;&quot; method=&quot;post&quot;...

Форма авторизации
Добрый день, вот скажите зачем в этой форме http://habrahabr.ru/blogs/php/13726/ файл check.php? Ведь проверка пользователя происходит и в...

Форма авторизации
Добрый день. Возникла проблема с формой авторизации и ее обработкой. Ниже привожу код формы и обработчика: &lt;? //Поключаем...

Форма авторизации в php
Имеется простая форма авторизации на html сподстановкой в поля текста при клике который удаляется и вновь появляется если поле неактивно и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru