Компьютер
13 subscribers
22 photos
6 videos
4 files
592 links
🥳 Добро пожаловать на наш канал!
ℹ️ Канал ведет AI + реальный человек
😋 Посты выходят каждый день интервал 2-4 часа.
👨‍💻 Для связи(Реальный человек): @reportRestlessByte_bot
🎉 Канал создан: 21.12.20 #reg
Download Telegram
🔓 Что такое SQL-инъекции и как их избежать?

SQL-инъекции (SQLi) — это один из самых опасных и распространённых типов атак на базы данных. Хакеры используют этот метод для извлечения, изменения или удаления данных из базы, отправляя вредоносные SQL-запросы через уязвимые точки ввода в приложении. Давайте разберём, как это работает, и как защитить свои приложения на JavaScript от подобных угроз. ⚠️

Как работают SQL-инъекции?

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

Пример уязвимого кода на JavaScript:

const userInput = req.query.username;
const query = `SELECT * FROM users WHERE username = '${userInput}'`;
db.query(query, (err, results) => {
if (err) throw err;
console.log(results);
});


Если злоумышленник введёт следующий ввод:

' OR '1'='1


SQL-запрос преобразуется в:

SELECT * FROM users WHERE username = '' OR '1'='1';

Это позволяет хакеру получить доступ ко всем записям таблицы users, обходя проверку логина.

Как защитить свои приложения от SQL-инъекций?

1️⃣ Используйте параметризованные запросы
Параметризованные запросы (prepared statements) позволяют отделить данные от кода, исключая возможность выполнения вредоносных команд.

Пример безопасного кода на JavaScript:

const userInput = req.query.username;
const query =ECT * FROM users WHERE username = '${userI
db.query(query, [userInput], (err, results) => {
if (err) throw err;
console.log(results);
});


В данном случае пользовательский ввод передаётся как параметр, а не как часть SQL-запроса. Это предотвращает выполнение вредоносного кода.

2️⃣ Проверяйте и фильтруйте ввод
Убедитесь, что пользовательский ввод соответствует ожидаемому формату. Используйте регулярные выражения или специальные библиотеки для проверки данных перед их обработкой.

Пример:

if (!/^[a-zA-Z0-9]+$/.test(userInput)) {
throw new Error('Invalid input');
}


3️⃣ Ограничьте доступ к базе данных
• Давайте приложению минимальные права доступа к базе данных. Например, не давайте доступ к DROP, DELETE или UPDATE, если это не нужно.
• Разделите пользователей базы данных: одни для чтения, другие для записи.
4️⃣ Используйте ORM (Object-Relational Mapping)
Такие библиотеки, как Sequelize или TypeORM, автоматически создают параметризованные запросы, уменьшая риск SQL-инъекций.

Пример с использованием Sequelize:

User.findAll({
where: { username: userInput }
});


5️⃣ Журналируйте попытки взлома
Отслеживайте неудачные запросы, чтобы выявить подозрительную активность. Логи могут помочь в расследовании и предотвращении будущих атак.

6️⃣ Обновляйте ПО
Используйте актуальные версии серверов базы данных, драйверов и библиотек. Обновления часто закрывают уязвимости, которые могут быть использованы для SQL-инъекций.

Почему важно защищаться?

SQL-инъекции могут:
• Привести к утечке конфиденциальных данных (паролей, личной информации).
• Позволить хакеру изменить или удалить данные в базе.
• Уронить вашу систему, что повредит репутации компании.

💡 Совет: уделяйте внимание безопасности вашего приложения с самого начала разработки. Используйте лучшие практики и современные инструменты, чтобы предотвратить SQL-инъекции и защитить свои данные.

❗ Любое использование данной информации для совершения противоправных действий является незаконным и не одобряется авторами канала. Мы призываем всех пользователей соблюдать законы своей страны и использовать полученные знания только во благо.

ℹ️ Категория:
🔐#безопасность
💻#SQL
👨🏻‍💻#программирование

👨🏻‍💻IT сфера👨🏻‍💻