Я скинул ссылку на сайт на оценку в одну кф, и там какая-та крыса взломала его с помощью xss-атаки (взломщик вписывал кусочки кода во все текстовые поля, и создавал много аккаунтов с этим). Поставил он короче редирект, потом по некоторым данным узнал, что взломщик скачал куки, и как-то получил доступ к серверу и к сайты. Дальше он удалил папку с пользователями и всей инфой, а после уже удалил и сам сайт.
Вопрос: Как обезопасить себя от последующего такого взлома? Какие утилиты посоветуете?
P.s:
Сайт на: HTML & PHP, на VDS Ubuntu. У меня есть IP взломщика.
Сергей Горностаев, Это нужно записать в ваши цитаты. Ведь это самая серьёзная жиза которую я когда-либо слышал, ведь если недохакер будет лапать сервер человека который грамотно всё сделал, сломает только свои нервы, но если писал код говнокодер, а недохакер умеет пользоваться хотябы инъекциями, то проблем не возникнет)
Всё возможно. Дыра может быть не только в твоем коде, но и у тех, кто поставляет софт, на котором работает сайт. Даже если защитился от xss, инъекций, csrf и прочего, то обязательно найдется кто-то кто проверит твою поделку на устойчивость к race condition или заюзает какой-нибудь баг из ПО или вообще найдет новый неизвестный вектор уязвимости. Просто первое что нужно делать в таких случаях - лезть в логи веб-сервера. Если веб-сервер являлся точкой входа в систему, то после некоторого анализа будет понятно кто и что делал и где дыра. Более того, уязвимость можно будет воспроизвести в тестовом окружении и затем написать на неё фикс.
Как обезопасить себя от последующего такого взлома?
Запомнить раз и навсегда - нельзя доверять данным которые пришли от клиента.
Это значит, что нужно абсолютно все данные пришедшие от клиента проверять на корректность.
htmlspecialchars раз, mysql_escape_string два (или %s плейсхолдеры).
Сколько раз уже видел и здесь в вопросах, и на других форумах ... SELECT ... WHERE ID = $_GET['id'] прям так сразу без обработки. Ну нельзя же так!
Даже видел недавно типа не добавляется большой текст статьи в базу.
Оказалось в статье были кавычки! А данные не проверялись! Вот, даже как. А он жил с этим какое-то время!
Привет. Судя по твоему рассказу сайт был взломан с помощью похищения cookie администратора через XSS. Для того, чтобы защититься конкретно от кражи cookie нужно было установить атрибут HttpOnly для cookie. Этот флаг запрещает доступ к cookie через Javascript. От других XSS уязвимостей можно защититься с помощью установки заголовка X-XSS-Protection и настройки Content Security Policy. Также можно избавить от самой причины возникновения XSS - отсутствия фильтрации в коде, который вставляет пользовательские данные в тело страницы. Для этого нужно производить сертификацию вставляемых строк. Можешь поискать XSS Filter Evasion Cheat Sheet. И для того, чтобы найти места на сайте уязвимые к XSS и другим уязвимостям рекомендую попробовать сканеры уязвимостей типа https://metascan.ru