Как зарегистрировать кого-то, пытающегося сделать 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, вы можете использовать его.