SQL / c++

underpl1g

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

Dark_Knight

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

Vintik

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

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,062
2,077
@Vintik
1. Мы его не учим. Мы эму даем советы, чтобы у него случайно в будущем не спиздили БД и он не плакала, что мы тут эму плохого посоветовали потому я испросил где это он хочет использовать. Вдруг эму чисто для практики надо на локалке сделать.
2. Где экранирование строк в запросе?
3. Использовать переменные напрямую в запросе - плохая практика. Даже для примера,
4. Где PDO?
5. Строки 5 и 6 можно записать ввиде одной строк и сразу убить проблему с необъявленной переменной. Вот тебе пример твоего кода, если значение будет один. https://ideone.com/JjYkzG
 

Vintik

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

Tema05

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

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,062
2,077
  • Ха-ха
  • Влюблен
Реакции: tinkoir и user390868

imring

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

Vintik

Мечтатель
Проверенный
1,466
915
или пример с сампом
50 секунда

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

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

Dark_Knight

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

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