Итак, дорогой друг, ты почему-то поставил себе на сайт PhpBB.
Может быть потому, что не читал журнал ][, а может потому, что тебе нравится этот движок. Однако шанс на то, что тебя не хакнут минимален. Армии киддисов рыскают в инете в поисках очередной жертвы. Как же защитится от примитивного
взлома форума? Попытаюсь подкинуть тебе несколько идей. Большую их часть ты сможешь использовать и в других скриптах.
Обновление
Это по дефолту. Обновлять форум надо. И то, что у тебя стоит 5/10/15 (нужное подчеркнуть) модов не отговорка. Просто в этом случае тебе следует использовать «code changes», заботливо выкладываемые разработчиками форума в виде тех же модов. Рекомендую также подписаться на рассылку о новых версиях форума. Однако за всем не уследишь, да и лень
бывает, правда? Посему я предлагаю тебе несколько пассивных способов защиты форума.
Сокрытие версии
Недавно появилось в PhpBB и здорово помогает против гугл-хакеров. А если ты всё-таки не обновляешь форум, я думаю подправить файлы simple_footer.tpl и overall_footer.tpl тебе не составит труда. Однако можно пойти дальше и написать злую фразу "Powered by PhpBB" с помощью javascript
<script language="javascript" type="text/javascript">
<!--
document.write('Pow' + 'er' + 'ed by Ph' + 'p' + 'BB');
-->
</script>
Невелика потеря, если у юзверя отключён javascript, хотя вовсе убирать фразу не следует по чисто моральным принципам. А можешь и поиздеваться, написав "PhpBB 2.0.6". Когда хакер, всё же хакнув тебя, узнает настоящую версию, то от злобы он уронит тебе всю БД 😉 Можешь ещё написать "Php BB"... Это не совсем честно, но работает!
Нестандартный стиль
Не только украсит твой форум, но и незначительно повысит защиту против эксплойтов, выдирающих инфу из HTML-страницы. И потом стандартный стиль создаёт ощущение, что админ или забил на форум или ламо.
Префикс таблиц
Почему бы не поставить туда чего-нибудь своего, например "ExBB". Кстати, это можно сделать и после установки, путём правки config.php и переименования таблиц.
Модификация БД
Надёжный способ защиты от SQL-injection-Union атаки - это изменение БД. Добавь в таблицы лишние пустые поля, пройдись по коду и примитивные (!) эксплойты пойдут лесом по причине несовпадения количества полей. Или другой способ: переименуй поле user_password в blahblahblah и исправь исходники (автоматизировать сей процесс можно запросто). Всё, теперь при попытке раздобыть хеш пароля админа эксплойт удивлённо повиснет 🙂 Да и не только эксплойт.
Прятанье config.php
Упростит тебе жизнь, если хаксор получит возможность читать файлы на сервере благодаря include багу. Конечно, в этом случае от содержимого файла ему всё равно будет мало толку, если ты только не ставишь одинаковые пассы на всё подряд.
Нормальный пароль
Как это не банально, но пароль должен быть вида Sdh66rH904hG - только так ты сможешь не беспокоится о взломе хеша. Хранить его будешь в Password Commander. Ну скажи, часто ли тебе придётся его вводить? Теперь, если хеш всё-таки будет украден, то толку от него будет меньше.
Отрубить поиск
И так не мешало бы. Работает он жутко глючно, жрёт неимоверное количество места в БД и кошмарно снижает производительность. И потом является источником багов, того же highlight. К сожалению, сделать это стандартными средствами нельзя, но не зря же ты читаешь ][? Убирай относящиеся к нему файлы, роняй таблицы и вычисти сырцы и темы. Результат - повышение производительности и безопасности. Если лень разбираться, то подскажу: устрани вызовы функций, находящихся в functions_search.php. За исключением последней, конечно. А какие дропать таблицы сам подумай.... У меня проблем не возникло.
Fake-админка
Настоящую админку упрячь подальше, а в фейке удали все запросы к БД типа INSERT, UPDATE и.т.п. А ещё лучше, вместо их выполнения логируй их в файл, вместе с IP и другими полезными данными. Представляешь, как будет тормозить хакер, когда изменения, производимые им, не будут применяться? Прямо honeypot, а не форум!
Изменение алгоритма хеширования
Вообще полезный приём. Измени все вызовы функций, связанные с хешированием на свои, которые после вызова стандартных слегка модифицируют хеш. Например ac45e53bc8dc478e->ac45e53bc8da478e.
Хакер едва ли заподозрит подвох... Более того, взглянув на эти два хеша он и разницу не сразу заметит...
Soviet UNION
Ну накой этот юнион изобрели, столько он дыр принёс.... Так открой инклуд для работы с БД и добавь фильтрацию запросов с UNION!
Заключение
Чем больше ты переименуешь файлов, таблиц и полей, тем
- Сложней будет хаксору
- Сложней будет тебе обновлять форум
- Больше ошибок ты налепишь
Так что знай меру и не болей паранойей. Провернув все эти приёмчики ты отпугнёшь/остановишь и киддиса и хаксора, если только у последнего не будет конкретной цели хакнуть именно тебя. Хотя переименование полей таблицы даёт практически непробиваемую защиту от SQL-injection, ибо перед хаксором, считай, не будет сорцев.