У меня есть небольшой игровой сайт с 400 участниками (~ 50 активных), построенный на базе данных MySQL. Я единственный разработчик и любитель, поэтому делаю изрядную долю ошибок.
Чтобы защитить себя, сайт и вклад моих участников, я настроил сервер так, чтобы он работал с простым текстом «у нас возникла ошибка» и автоматически отправлял мне информацию об ошибке PHP по электронной почте.
Конечно, это никогда не сработает в корпоративной среде, слишком жестко, но мои участники понимают, так как мы создали сайт вместе, и у меня личные отношения с большинством из них. Кроме того, они, как правило, технически неискренние старики, а это значит, что неудачные ситуации будут их сбивать с толку.
Сайт также везде использует PDO.
/ предыстория завершена
Я проснулся сегодня утром и получил 90 сообщений об ошибках. Необычно!
Все это сработало за 2 минуты ... самое необычное!
Сообщения об ошибках были примерно такими:
PDOStatement::execute() expects parameter 1 to be array, string given
что, взглянув на мой код, невозможно без постороннего вмешательства.
Итак, я собираю свои журналы трафика и обнаруживаю, что IP 219.117.193.20, базирующийся в Токио, забивает мой сайт такими запросами, как:
GET /search.php?type=basic%20AND%201%20=%201
первая часть этого: GET /search.php?type=basic
действителен и указан в главном навигаторе. Все остальное (а) он (а) добавляет.
Похоже на простой Bobby Tables
атака.
Это продолжалось несколько минут и около 100 звонков, а затем прекратилось.
МОЙ вопрос к вам, прекрасные люди:
Стоит ли мне предпринимать какие-либо действия против этого IP-адреса?
или это всего лишь цена видимости и слишком частая, чтобы беспокоиться о ней?
вы баните IP? подсеть? вы связываетесь с интернет-провайдером?
Просто любопытно, что делают профессиональные администраторы серверов в таких ситуациях, как я полагаю, это должно произойти. чрезвычайно часто...?
Это цена славы. Время от времени кто-то будет пробовать что-то против практически каждого сайта (например, я вижу сканирование уязвимых версий phpMyAdmin каждые пару дней). Поскольку задействованные машины являются почти исключительно зомбированными машинами конечных пользователей, «предпринимать меры» против них бесполезно (любые «активные меры противодействия», конечно, совершенно неверны, но даже пытаться сообщить о зараженной машине владельцу почти невозможно. конечно бесполезно).
Убедитесь, что ваш сайт безопасен, и просто продолжайте свой день.
Поскольку вы также являетесь разработчиком, вы можете подумать о кодировании соответствующего обработчика ошибок, чтобы игнорировать и / или, возможно, даже запускать ответ / обработку «tar pit».
Первое, что вам нужно сделать, это проверить КАЖДЫЙ ввод, который вы получаете, и полностью параметризовать каждый запрос, который вы передаете в базу данных. Таким образом, атака SQL Injection не будет успешной.
Как сказал @womble, попытки запретить IP или подсеть бесполезны. Скорее всего, человек, проводящий атаку, в любом случае даже не использует этот IP-адрес. Они просто переключатся на другого зомби и будут продолжать.
Закрепите все и готово. Атаки провалятся, им надоест и они пойдут дальше.
Вы можете попытаться защитить свой веб-сайт, используя клиентский ключ, созданный самим пользователем. Раздайте этот ключ только своим членам и обновляйте его каждый год.
Недостаток: вам, вероятно, придется объяснить, как установить и использовать этот ключ во всех типах веб-браузеров ...
Более простым подходом может быть защита с использованием парольной защиты .htdigest вашего сервера.