Пишу для домашней странички простейшую гостевую книгу на языке PHP. Возникли дополнительные вопросы, прошу помощи.
Сообщения посетителей с указанием e-mail сохраняются в текстовом файле, который находится за пределами папки «DocumentRoot» веб-сервера.
Перед сохранением сообщения в файл скрипт производит замену символов:
- символ «&» заменяет командой «& a m p ;»
- «<» заменяет кодом «& l t ;»
- «>» заменяет «& g t ;»
- символы перевода строки «\r», «\n» заменяет тегом «<br>», т.к. переводы строки отделяют друг от друга записи в файле
- символ «|» заменяет кодом «& # 124 ;», т.к. вертикальная черточка используется в качестве разделителя полей в составе записи
Список недочетов гостевой книги, в том числе, в плане защищенности:
- не реализована защита от приема повторно направленных данных, т.е. нафлудить можно нажатием «F5» в браузере :)
- не осуществляется проверка правильности указания e-mail на основе шаблона «user@sub.domain», в составе имени посетителя можно указывать любые символы
- скрипт не проверяет переменную «REFERER», т.е. будет принимать данные формы с постороннего сайта (такая атака называется CSRF)
Возникли следующие вопросы:
- Может ли потенциальный злоумышленник «украсть» текстовый файл, в котором хранятся сообщения посетителей с указанием e-mail'ов?
Если может, то как предотвратить такую утечку информации? - Возможно ли внедрить в сообщение теги, спецсимволы HTML наподобие ©, код JavaScript, либо PHP с целью отображения у остальных посетителей, исполнения на сервере? Если возможно, то как это предотвратить? Подразумевается возможность выполнения атак «Cross-site Scripting» (XSS) и «PHP Injection».
- Какие, по вашему мнению, еще могут быть недочеты у гостевой книги в плане защищенности от «взлома», нарушения работы?
Спасибо.