LINUX.ORG.RU

Гостевая книга - поиск уязвимостей


1

0

Пишу для домашней странички простейшую гостевую книгу на языке 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».
  • Какие, по вашему мнению, еще могут быть недочеты у гостевой книги в плане защищенности от «взлома», нарушения работы?

Спасибо.

Deleted

Ответ на: комментарий от Deleted

В своем последнем сообщении вы, в основном, пересказываете очевидные вещи, которые понятны всем посетителям и без разъяснений.

и которые очевидно непонятны вам (судя по вашим постам, и по вашему коду).

drBatty ★★
()
Ответ на: комментарий от Deleted

Полезное применение заключается в возможности установить обратную связь с автором поста.

интересно, каким образом?

drBatty ★★
()
Ответ на: комментарий от drBatty

ТС это сам поймёт, как и то, что весь его код надо выкидывать на помойку, и писать заново ;)

Полезут preg_replace'ы, которые с лёгкостью убиваются utf-8 несимволами. Или которые ничерта не работают по-русски. Все эти проблемы (о которых вы несомненно и не слышали) давно и успешно решены в php, для любой известной СУБД, а для вашего файла вам это решать самостоятельно.

ту сотню ваших строк, что вы тут показали, можно смело переписывать с нуля ;)

Уверен - что-то вы забудете.

С большей долей вероятности можно утверждать, что защитные функции php будут защищать вас не только от сегодняшних, но и от _завтрашних_ атак, о которых вы даже не догадываетесь.

Чего не скажешь про *NIX'ы. Можете не трудиться, скорее всего размер блока будет 65536 байт, причём скорее всего он будет только увеличиваться. Вот только надеяться на это === делать на отъ*бись.

В своем последнем сообщении вы, в основном, пересказываете очевидные вещи, которые понятны всем посетителям и без разъяснений.

и которые очевидно непонятны вам (судя по вашим постам, и по вашему коду).

Из прочитанного усматривается, что вы, по всей видимости, самоуверенный молодой человек, с которым нет смысла обсуждать данный серъезный вопрос. Как говорится в пословице, когда дискуссия кипит, истина испаряется.

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

Deleted
()
Ответ на: комментарий от Deleted

Лол, не лень было цитировать и выделять, а сахарный?

anonymous
()
Ответ на: комментарий от drBatty

Полезное применение заключается в возможности установить обратную связь с автором поста.

интересно, каким образом?

Разъясняю для интересующихся: с использованием электронной почты.

Deleted
()
Ответ на: комментарий от KRoN73

Только до тех пор, пока не захочется модифицировать файл.

Модифицировать в каком смысле?

Deleted
()
Ответ на: комментарий от KRoN73

У него же пятьдесят записей там, дёрнуть их все в хэш (или как в PHP такое зовётся), поменять структуру файла и перезаполнить.

Hoodoo ★★★★★
()
Ответ на: комментарий от Hoodoo

дёрнуть их все в хэш (или как в PHP такое зовётся), поменять структуру файла и перезаполнить.

А в это время кто-то ещё что-то напишет... :)

...

А лет 12 назад, когда SQL на фри-хостингах был экзотикой, много на этих граблях с блокировками танцевал... :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

А, хостинг же, я всё время забываю, что я не у себя дома на своей уютной вэпээсочке, где что хотел поставил, что хотел - убрал, что хотел - остановил на пять минут.

Hoodoo ★★★★★
()
Ответ на: комментарий от Deleted

Из прочитанного усматривается, что вы, по всей видимости, самоуверенный молодой человек, с которым нет смысла обсуждать данный серъезный вопрос.

на основе вашей сотни строк я никаких выводов сделать не могу. За отсутствием предмета обсуждения.

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

мне пох.

drBatty ★★
()
Ответ на: комментарий от Deleted

Разъясняю для интересующихся: с использованием электронной почты.

реализацию можно глянуть?

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.