Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Повышение безопасности входа в приложение на Delphi: параметризованные запросы против SQL-инъекций

Delphi , Базы данных , SQL

В статье мы рассмотрим важность использования параметризованных запросов в Delphi для предотвращения SQL-инъекций, а также обсудим лучшие практики хранения паролей в базе данных.

Описание проблемы

Разработчики часто сталкиваются с необходимостью обеспечения безопасности своих приложений. Одной из угроз является SQL-инъекция, которая позволяет злоумышленнику внедрить или "инъектировать" вредоносный SQL-код в запрос, что может привести к несанкционированному доступу, изменению данных или даже полному контролю над системой. Использование параметризованных запросов является одним из наиболее эффективных способов защиты от SQL-инъекций.

Использование параметризованных запросов

Параметризованные запросы позволяют отделить данные от кода запроса, что делает их устойчивыми к инъекциям. В Delphi для работы с базами данных часто используются компоненты TMySQLConnection и TMySQLQuery. Пример кода, который не использует параметры, и может быть уязвим для SQL-инъекций:

SQLQuery1.SQL.Text := 'SELECT * FROM registered WHERE email="' + Email + '" and login_pass= "' + Password + '"';

Вместо этого, следует использовать параметризованные запросы:

SQLQuery1.SQL.Text := 'SELECT * FROM registered WHERE email= :Email and login_pass= :Password';
SQLQuery1.ParamByName('Email').AsString := Email;
SQLQuery1.ParamByName('Password').AsString := Password;
SQLQuery1.Open; // Открытие соединения с базой данных
if SQLQuery1.RecordCount > 0 then form2.Show;

Однако, если при использовании параметризованных запросов возникает ошибка [0x0005] Operation not supported, необходимо убедиться, что свойство ParamsCheck компонента TMySQLQuery установлено в значение True.

Хранение паролей

Хранение паролей в открытом виде в базе данных является небезопасным. Рекомендуется использовать хеширование с солью. Пример хеширования пароля:

passhash := SHA2(CONCAT(salt, Password), 512);

Используя этот метод, запрос на проверку пароля будет выглядеть так:

SELECT * FROM registered WHERE email = :email AND passhash = SHA2(CONCAT(salt, :password), 512);

При регистрации пользователя, в базу данных необходимо добавить не только хеш пароля, но и соль:

INSERT INTO registered (email, passhash, salt) VALUES (:email, SHA2(CONCAT(:salt, :password), 512), :salt);

Соль должна быть уникальной для каждого пользователя и достаточно случайной, чтобы усложнить задачу злоумышленнику.

Заключение

Параметризованные запросы — мощный инструмент для защиты от SQL-инъекций, но не менее важно правильно хранить пароли в базе данных. Используя хеширование с солью, можно значительно повысить безопасность приложения. Необходимо помнить, что безопасность — это непрерывный процесс, который требует внимания и обновлений в соответствии с новыми угрозами и лучшими практиками.

Создано по материалам из источника по ссылке.

В статье обсуждается важность использования параметризованных запросов в Delphi для предотвращения SQL-инъекций и лучшие практики хранения паролей в базе данных для повышения безопасности входа в приложение.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: SQL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 13:44:28/0.0052590370178223/1