SQL / c++

underpl1g

Участник
Автор темы
84
8
Как проверять совпадает ли логин и пароль с тем, что указан в базе данных?
Если нет, то *мое действие*
 

Dark_Knight

Me, me and me.
Друг
4,083
2,111
для начала именно пароль и логин, без зашифровок
Давай так. Сразу эту идею мы отбрасываем и забываем про неё. Сравнивай исключительно ХЕШ пароля. Второй вопрос. Ты делаешь подключение к БД сразу в своей программе или используешь прослойку какую-то? Прослойка в данном случае - это ты передаешь данные куда-то на сервер и он уже там ответ делает запрос к БД и тебе только отдает ответ от БД.
 
  • Нравится
Реакции: Angr

Vintik

Через тернии к звёздам
Проверенный
1,564
1,040
Давай так. Сразу эту идею мы отбрасываем и забываем про неё. Сравнивай исключительно ХЕШ пароля. Второй вопрос. Ты делаешь подключение к БД сразу в своей программе или используешь прослойку какую-то? Прослойка в данном случае - это ты передаешь данные куда-то на сервер и он уже там ответ делает запрос к БД и тебе только отдает ответ от БД.
Человек задал конкретный вопрос, зачем его учить? Он вроде бы советов не просил.

PHP:
$mysqli = mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_database);
mysqli_query($mysqli, "SET NAMES 'utf8'");
$mysqli_query = mysqli_query($mysqli, "SELECT id FROM users WHERE login = '$login' AND passwd = '$passwd'"); # делает запрос по введенному логину и паролю
$count = mysqli_num_rows($mysqli_query); # получает количество результатов
if ($count == 0) # сравнивает с нулём
  $result = false; # если ноль - значит такого аккаунта нету
mysqli_close($mysqli);
Простая реализация на PHP. Думаю, с C++ разберешься.
 

Dark_Knight

Me, me and me.
Друг
4,083
2,111
@Vintik
1. Мы его не учим. Мы эму даем советы, чтобы у него случайно в будущем не спиздили БД и он не плакала, что мы тут эму плохого посоветовали потому я испросил где это он хочет использовать. Вдруг эму чисто для практики надо на локалке сделать.
2. Где экранирование строк в запросе?
3. Использовать переменные напрямую в запросе - плохая практика. Даже для примера,
4. Где PDO?
5. Строки 5 и 6 можно записать ввиде одной строк и сразу убить проблему с необъявленной переменной. Вот тебе пример твоего кода, если значение будет один. https://ideone.com/JjYkzG
 

Vintik

Через тернии к звёздам
Проверенный
1,564
1,040
@Vintik
1. Мы его не учим. Мы эму даем советы, чтобы у него случайно в будущем не спиздили БД и он не плакала, что мы тут эму плохого посоветовали потому я испросил где это он хочет использовать. Вдруг эму чисто для практики надо на локалке сделать.
2. Где экранирование строк в запросе?
3. Использовать переменные напрямую в запросе - плохая практика. Даже для примера,
4. Где PDO?
5. Строки 5 и 6 можно записать ввиде одной строк и сразу убить проблему с необъявленной переменной. Вот тебе пример твоего кода, если значение будет один. https://ideone.com/JjYkzG
1. Согласен, был неправ.
2. Зачем? Так работает.
3. Не знал.
4. Зачем?)
5. Переменная объявлена строкой выше. Тут согласен, можно так, как ты посоветовал.
 

Vintik

Через тернии к звёздам
Проверенный
1,564
1,040
Чтобы не было sql инъекций
Ну тогда я совсем лох, потому что не слышал о таком. Покажи как это работает, как от этого защититься и где про это почитать. Плиз.
 

Tema05

Известный
1,505
472
Человек задал конкретный вопрос, зачем его учить? Он вроде бы советов не просил.

PHP:
$mysqli = mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_database);
mysqli_query($mysqli, "SET NAMES 'utf8'");
$mysqli_query = mysqli_query($mysqli, "SELECT id FROM users WHERE login = '$login' AND passwd = '$passwd'"); # делает запрос по введенному логину и паролю
$count = mysqli_num_rows($mysqli_query); # получает количество результатов
if ($count == 0) # сравнивает с нулём
  $result = false; # если ноль - значит такого аккаунта нету
mysqli_close($mysqli);
Простая реализация на PHP. Думаю, с C++ разберешься.
sql injection:

Это_для_меня_шаблон.jpg
 
  • Ха-ха
  • Нравится
Реакции: moreveal и Vintik

Dark_Knight

Me, me and me.
Друг
4,083
2,111
  • Ха-ха
  • Влюблен
Реакции: tinkoir и user390868

imring

Ride the Lightning
Всефорумный модератор
2,366
2,556
Покажи как это работает
или пример с сампом
50 секунда
где про это почитать
 
  • Нравится
Реакции: Vintik

Vintik

Через тернии к звёздам
Проверенный
1,564
1,040
или пример с сампом
50 секунда

Благодарю. Не знал, что этот олдовый метод со сменой пароля на а-ля pAdmin=22, является подобием инъекции.

@imring
Скажи, а как в этом методе злоумышленники искали название ключей (тот же pAdmin)?
 
Последнее редактирование:

Dark_Knight

Me, me and me.
Друг
4,083
2,111
Благодарю. Не знал, что этот олдовый метод со сменой пароля на а-ля pAdmin=22, является подобием инъекции.

@imring
Скажи, а как в этом методе злоумышленники искали название ключей (тот же pAdmin)?
Скорее всего паблик мод и структура БД была известная.
 
  • Нравится
Реакции: Vintik