Как зарегистрировать кого-то, пытающегося сделать SQL-инъекцию

Здесь есть много способов защитить ваш код от атаки SQL-инъекций. Но мне нужно Как зарегистрировать SQL-инъекцию для атаки, чтобы мы могли добавить его (злоумышленника) в базу данных "черный список".

Что мне нужно здесь, это своего рода функция, которая вернет true, если есть SQL-инъекция.

<?php
if(isset($_POST['username'])){
// need a function here which will return true if there's
// a sql injection else false
}
?>

Ответ 1

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

Будем предупреждать, что PHP-IDS не обнаружит все проблемы с внедрением SQL. Это невозможно сделать автоматически. Вам все равно нужно правильно обрабатывать ваши запросы.

Ответ 2

Изменить. Этот ответ был сделан до того, как вопрос был значительно изменен. Хотя он все еще действителен, он больше не обращается к конкретной ситуации в OP.

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

Научитесь правильно использовать parameterised queries, а SQL-инъекция - это не то, что вам когда-либо понадобится. В PHP вы можете добиться этого, используя библиотеки mysqli или PDO. Здесь есть масса вопросов, которые касаются этого и многих других обучающих программ, которые вы можете получить от googling для "параметризованных запросов" или "подготовленных операторов"

Ответ 3

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

Вместо этого попробуйте увидеть на сервере журналы, которые видят запросы и запросы пользователей, и принимают решение на основе этого. (для GET reqs). Для запросов POST, как https://stackoverflow.com/a/10383937/561269, вы можете использовать его.