RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 225
от 14.01.2006, 04:39

Администратор:Калашников О.А.
В рассылке:Подписчиков: 212, Экспертов: 37
В номере:Вопросов: 1, Ответов: 4


Вопрос № 32855: Спасибо за ответы по гостевой книге. Я тут нашел самый простой скрипт. Подправил его немного, установил на сайте. Теперь я хочу узнать, реально ли его поиметь. И прошу вас, если кому не лень, протестировать его на дыры и всякие там уязвимости. Мне ин...

Вопрос № 32.855
Спасибо за ответы по гостевой книге. Я тут нашел самый простой скрипт. Подправил его немного, установил на сайте. Теперь я хочу узнать, реально ли его поиметь. И прошу вас, если кому не лень, протестировать его на дыры и всякие там уязвимости. Мне интересно
, сможет кто-нибудь узнать пароль или похозяйничать в моей гостевухе. Вроде не должен. Но вдруг?
Адрес гостевухи http://romodos.pp.ru/gb/

Приложение:

Отправлен: 08.01.2006, 10:00
Вопрос задал: romodos (статус: Практикант)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 18)

Отвечает: Ерёмин Андрей
Здравствуйте, Romodos!
Оставил сообщение. Всё нормально работает. По поводу безопасности - не думаю, что кто-то станет взламывать гостевуху и подбирать пароль. В ней нет никакой особо ценной информации. Просто пароль лучше ставить не тот, что используется для доступа к сайту или к почтовому ящику, а другой. Удачи!
---------
Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 08.01.2006, 10:38
Оценка за ответ: 5
Комментарий оценки:
Спасибо за внимание

Отвечает: Zysoftik
Здравствуйте, Romodos!

Потестировал немного. Вот что я пронаблюдал:

Положительные моменты:
- вырезаются теги, что препятствует вызову JavaScript
- скрипт работает без сбоев (с недочетами, но без сбоев)
- имеется оперативная модерация

Недочеты:
- повторная отправка сообщения при обновлении страницы
- постоянно приходится вводить свое имя (как минимум)
- вся передача данных идет через адресную строку
- при вводе слишком длинного слова все раздвигается

Теперь что я могу посоветовать как исправить:
1. Повторная отправка сообщений

Здесь нужно каждый раз перед добавлением проверять по базе ник и текст сообщения. Т.е. для MySQL выполнить что-то типа

$sql="select * from yourtable where nick='".$nick."' and STRCMP(message,'".$message.'")=0";
$res=mysql_query($sql);
if (@mysql_num_rows($res)>0) {
//Уже есть такое сообщение
}
else {
//Добавляем
}

2. Постоянно приходится вводить данные в форму

Здесь нужно при выводе формы прописать полям значение.
Т.е. написать так:

echo '<input type=text name=nick value="'.$nick.'">';

а, после всех проверок в функции обработки добавляемого сообщения, если сообщение добавлено и ошибок не возникло - обнулить переменную с текстом сообщения.
При этом, вывод формы должен стоять после обработки данных.

Тогда получится так - при ошибке сохраняется вся форма, а в случае успешного добавления - все, кроме текста сообщения.
3. Вся передача идет через адресную строку

Не очень красиво. Лучше сделать все в тени. Для этого надо в форме явно указать метод передачи данных:

<form method=post action=''>

А в скрипте, вместо $_GET использовать $_POST.

4. Слишком длинное слово раздвигает таблицу

Тут, в общем, ничего не поделаешь :(
Можно вывернуться так:
- используем $words=explode(" ",$message);
- получаем список слов из текста, разбитого по пробелам (первый параметр)
- выводим каждое слово, проверяя его длину:
for ($i=0;$i<count($words);$i++)
{
if (strlen($words[$i])>MAXLEN) echo substr($words[i],0,MAXLEN)."...";
else echo $words[$i];
echo " ";//Пробел, т.к. они были "съедены" при разбивке
}
Получится так, что слова, длина которых превышает MAXLEN будут урезаны до этой длины и к ним будет добавлено троеточие.

Не очень гуманный метод, но при разумных параметрах может спасти и дизайн и не нервировать пользователей.
И еще совет - если нет желания превратить свою гостевуху в свалку чужих ссылок, не приносящих тебе ничего - не делай непосредственные ссылки на ресурсы. Пиши их просто текстом. Тогда и интереса автоматам не будет, и хлама будет меньше.
По поводу "похозяйничать" - я лично не хакер. На ламерские методы скрипт реагирует, вроде, адекватно.
Ответ отправил: Zysoftik (статус: 1-ый класс)
Отправлен: 08.01.2006, 11:06
Оценка за ответ: 5
Комментарий оценки:
Очень-очень подробный ответ. Спасибо за помощь. Сейчас же начну все исправлять

Отвечает: Lancelot
Здравствуйте, Romodos!
Это я так матернулся((((( Вообщем, антимат напиши, или сдери его откуда нибудь: www.manlix.ru Отличная гостевуха, я оттуда много положительных моментов брал! Ещё: сделай куки, а то имя вводить нудно постоянно. Идёт добавление одинаковых сообщений. Если хочешь чтобы не флудили, то исправь чтобы этот юзер ( сэтими куками или айпишником) мог добавлять только через 3-5 минут. А то зафлудят тебя! А так: теги не пропускает (это отлично!)! Если что-то незнаешь, напиши мне, или спроси на РусФаке, будем думать вместе. Если что-то срочно надо, то стучись в асю. Я оперативно помогу.
---------
Дуракам везёт? Не такие уж они и дураки. (Хенрик Ягодзинский)
Ответ отправил: Lancelot (статус: Студент)
Отправлен: 08.01.2006, 13:27
Оценка за ответ: 5
Комментарий оценки:
Спасибо за тестирование. Я уже вроде что-то исправил. Еще буду работать. Вы мне очень помогли

Отвечает: Дмитрий Иванов
Здравствуйте, Romodos!

По крайней мере сразу 2 проблеммы на быстрый поверхностный осмотр:

1. не проверяется от куда делается новая запись, что выразится в возможности неограниченного спама у тебя в гостевухе. Я сохранив страницу у себя на локалке смог ввести новую запись

2. мыльные адресса записаны открытым текстом с HTML.
---------
ставя оценку - подумай, может ты не все описал.
Ответ отправил: Дмитрий Иванов (статус: Студент)
Отправлен: 08.01.2006, 16:02
Оценка за ответ: 5
Комментарий оценки:
Спасибо за внимание
Вроде там везде теги фильруются.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.phpplus
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное