- Не совсем поняла, что Вы сделали: все сообщения в один файл или каждое в отдельном? В первом случае не забудьте, что из PHP можно работать с файлами не <= 2Гб и проверяйте время от времени, не пора ли файл сменить/обнулить/...
- Выведите файл/файлы за пределы DOCUMENT_ROOT или защитите от прямого доступа в .htaccess (для Apache)
- Если данные пользователя (ник, тема...) участвуют в формировании пути к файлу, отфильтруйте их, чтобы не осталось лазеек для выхода за пределы директории (например, с помощью регулярных выражений)
- Чтобы не допустить XSS (это уже при показе сообщений), отфильровывайте теги и все возможности их воспроизведения с помощью entities и кодов
- Чтобы не допустить заспамливания и ограничить возможности DOS-атаки, фиксируйте в сессии время и количество сообщений пользователя. Ограничьте максимальное количество постов на одну сессию и введите минимальное время между двумя постами из одной сессии. В этом же духе можно придумать много дополнительных проверок: в пределах сессии не может меняться IP и User-Agent, прежде чем послать POST, пользователь должен был запросить страницу с формой (отслеживайте по HTTP_REFERER)...
- Позаботьтесь о достаточно подробном логе происходящего. Тогда, если почуствуете неладное, по логам сможете отследить особенности атаки и принять соответствующие меры. Если Вы не уверены, что сервер настроен так, чтобы достаточно подробно протоколировать события (варианты: нет доступа к настройкам сервера, удобнее вести отдельный лог для формы, чтобы легче было найти те данные, что Вам нужно), организуйте лог средствами PHP
|