Защита сайта от DoS атаки клавишей F5

Простейшая DoS атака, которую можно организовать на сайт, заключается в зажиме клавиши клавиатуры F5 при просмотре сайта в браузере. Что приведет к циклической перезагрузке страницы, что в свою очередь наплодит дочерних процессов, которые либо, если сервер настроен криво, уронят сервер баз данных mySQL по исчерпании свободной памяти, либо, если сервер сконфигурячен нормально, просто сделают невозможной загрузку сайта в течении нескольких минут. После того как child-процессы веб-сервера помрут, то сервер начнет открываться в обычном режиме.

Этой пакостью любят заниматься шолохацкеры, полагая себя повелителями тырнетов и указывая владельцу сайта на его никчемность. Обычно я не закрываю эту багу с кнопкой F5, ибо вебсервер чаще всего настроен так, чтобы не исчерпать свободные ресурсы, но на нескольких блогах пришлось взводить курки, ибо поток невминозов неиссякаем.

Делается это на уровне отключения функционала через JavaScript. То есть, если у васи, стоит какой нить NoScript то он все равно сможет нагадить владельцу сайта в карман; но для среднестатистического кулхацкера этого будет достаточно.
Вариантов есть несколько, но часть из них либо работает только в определенных браузерах, либо отрубят попутно аяксовский функционал блога. Теоретически можно настроить прерывания для запуска чайлд процессов, но в случае наплыва посетителей это может сыграть дурную шутку уже с владельцем сайта.

Так что я остановился на следующем решении, которое добавляется в header темы, до закрывающего тэга </head>

<!– Disable F5 –>
<script type = “text/javascript”>
    window.onload = function () {
        document.onkeydown = function (e) {
            return (e.which || e.keyCode) != 116;
        };
    }
</script>

После этого перегрузить страницу можно будет только с помощью правого клика мышью в рабочее поле страницы и пункта меню “обновить текущую страницу”. Ибо нажатие F5 не будет работать на обновление.

Оставить комментарий