Веб-версияОткрыть в Telegram

Пост🤔 Как бороться в БД с SQL Injection?

1 октября 2026
J
Java | Вопросы собесов
🤔 Как бороться в БД с SQL Injection? SQL Injection – это атака, при которой злоумышленник вставляет вредоносный SQL-код в запрос, чтобы получить несанкционированный доступ к данным. Допустим, у нас есть код String query = "SELECT * FROM users WHERE username = '" + username + "' AND password = '" + password + "'"; Если злоумышленник введёт ' OR '1'='1 в поле пароля, запрос превратится в: SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1' 🚩Способы защиты от SQL Injection 🟠Использование `PreparedStatement` (РЕКОМЕНДУЕТСЯ) Подготовленные запросы автоматически экранируют входные данные, предотвращая SQL-инъекции. String sql = "SELECT * FROM users WHERE username = ? AND password = ?"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString(1, username); stmt.setString(2, password); ResultSet rs = stmt.executeQuery(); 🟠Использование ORM (например, Hibernate) ORM-фреймворки (Hibernate, JPA) автоматически генерируют безопасные SQL-запросы. TypedQuery<User> query = entityManager.createQuery( "SELECT u FROM User u WHERE u.username = :username AND u.password = :password", User.class); query.setParameter("username", username); query.setParameter("password", password); User user = query.getSingleResult(); 🟠Проверка и экранирование входных данных Если по какой-то причине PreparedStatement использовать нельзя, экранируйте опасные символы (', " и ;). String safeInput = input.replace("'", "\\'"); 🟠Минимизация прав в БД Создавайте отдельного пользователя БД с ограниченными правами: Запрет на DROP, DELETE, UPDATE без WHERE Только доступ к нужным таблицам CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'securepassword'; GRANT SELECT, INSERT, UPDATE ON mydb.users TO 'app_user'@'localhost'; 🟠Использование Web Application Firewall (WAF) WAF анализирует HTTP-запросы и блокирует подозрительные SQL-запросы. Пример: ModSecurity – популярный WAF для защиты веб-приложений. Ставь 👍 и забирай 📚 Базу знаний
6 · 966 ·

Рядом в ленте

JJava | Вопросы собесов🤔 Какая сложность поиска метода по ключу в коллекции TreMap? В TreeMap поиск элемента по ключу выполняется за O(log n). 🚩Почему сложность `O(log n)`? TreeMap осJJava | Вопросы собесов🤔 Какие есть методы HTTP-запросов? - GET — получение данных; - POST — создание ресурса; - PUT — полное обновление ресурса; - PATCH — частичное обновление; - DEL
это сообщение
JJava | Вопросы собесов🤔 Как подключить свою библиотеку в другом проекте? Для подключения своей библиотеки: - собрать её в JAR; - опубликовать в локальный или удалённый репозиторий (нJJava | Вопросы собесов🤔 Что такое синхронизация и зачем она нужна? Синхронизация — это механизм, который используется для контроля доступа к общим ресурсам или критическим секциям ко
JJava | Вопросы собесовJava | Вопросы собесов@easy_java_ru · канал · Технологии
11 344подписчиков1 042средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем