информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медГде водятся OGRыПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / web building
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
аккаунтов? Куки не подойдут для хранения аккаутнов, так как... 25.08.04 11:47  Число просмотров: 2635
Автор: DgtlScrm Статус: Member
<"чистая" ссылка>
> Теперь меня интересует следующая проблема, точнее, дилема:
> я буду вводить на форуме обязательную регистрацию, но я не
> знаю, что лучше использовать для безопасности аккаунтов -
> хеш, сформированный из переменных окружения, или куки? а
> может, есть другие варианты?

аккаунтов? Куки не подойдут для хранения аккаутнов, так как хранятся на клиенте :) Может ты имеешь ввиду сессии? Так или иначе, на севрере хранить пароли желательно в хеше, хотя с последними новостями про md5 это может не помочь... поэтому скомбинируй хеш с каким-либо линейниы алгоритмом шифрования...

Для сессии генерируй отдельный случайный идентификатор. Его можешь кидать в куки, тогда человек сможет закрыть окно с форумом а когда зайдет на него через 5 минут ему не прийдется снова вводить логин/пароль...
<web building>
Форум на perl - первые проблемы. 25.08.04 10:19  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Начал писать свой форум на перл. Естественно, по ходу возникает очень много вопросов и проблем. Что-то пытаюсь решить сам, но возникают такие проблемы, решение которых я сам найти не могу.

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

if (($sect ne "") and ($id ne "")) { open $AT, "sections/$sect/$id.top"; @ATtheme = <$AT>; close $AT; for ($AT1= 0; $AT1< @ATtheme; $AT1++) { @ATtheme1[$AT1]= @ATtheme[@ATtheme- $AT1- 1]; } #постраничный вывод: $ATpages= int((@ATtheme- 1)/ 10); $Tpage= 0 if ($Tpage< 0) or ($Tpage> $ATpages) or ($Tpage ne int($Tpage)); print "<tr><td><center>\n"; if ($ATpages> 0) { print "Страницы: "; for ($ATtemp= 0; $ATtemp<= $ATpages; $ATtemp++) { print "<A href=?sect=$sect&id=$id&Tpage=".$ATtemp.">".($ATtemp+ 1)."</A> " if ($Tpage ne $ATtemp); print "".($ATtemp+ 1)."\n" if ($Tpage eq $ATtemp); } } print "<br><a href=forum.pl?sect=$sect>Назад в раздел</a></center></td></tr>"; # for ($i= $Tpage* 10; ($i< ($Tpage+ 1)* 10) and (@ATtheme1[$i]); $i++) { ($ATaut, $ATTheme, $ATmsg, $ATtime) = split(/;;;;;/, @ATtheme1[$i]); #Вывод непосредственно, сообщения ;) print "<tr><td><table align=center width=65%><tr><td>автор: $ATaut<br>Тема сообщения:$ATTheme<br>сообщение добавлено $ATtime</td></tr><tr><td>$ATmsg</td></tr></table></td></tr>"; } }
Ещё одна проблема 26.08.04 12:11  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
В общем, возникла проблемка при выводе топиков из раздела.
В данный момент мой код выводит топики с последнего_добавленного да первого_добавленного, то есть, последний добавленный топ получается внизу, а мне надо наоборот и я не знаю, как это сделать =(
Плюс к этому, хочется к этой части кода добавить постраничный вывод, на каждой странице - по 10 топиков.
Ниже прилагаю нынешний код. Надеюсь на вашу помощь.

if (($sect ne "") and ($id eq "") and ($Tpage eq "") and ($act eq "")) { #считаем кол-во топиков в теме $b= 0; while (open $a, "sections/$sect/$b.top") { close $a; $b++; } print "<tr><td><center>Всего тем в разделе: ", $b, "\n"; print "<br><a href=\"forum.pl\">Назад на главную</a></center></tr></td>\n"; #выводим все темы из раздела: for ($a= 0; $a< $b; $a++) { open OTN, "sections/$sect/$a.top"; @a= <OTN>; $NumStr = @a; #кол-во строк в файле ;)) close OTN; ($Taut, $Ttheme, $Tmsg, $Ttime) = split(/;;;;;/, $a[0]); ($LTaut, $LTtheme, $LTmsg, $LTtime) = split(/;;;;;/, $a[@a-1]); $NumAns = $NumStr -1; #Кол-во ответов на тему print "<tr><td><center><a href=\"forum.pl?sect=$sect&id=$a\">$Ttheme</a><br>\n"; print "Тему создал <a href=forum.pl?act=viewauth&user=$Taut>$Taut</a> в $Ttime<br>\n"; #Выводим кол-во ответов: if ($NumAns != 0) { print "Кол-во ответов: $NumAns<br>"; }else { print "Тема пока что без ответов<br>"; } print "(Последнее сообщение добавил: <a href=forum.pl?act=viewauth&user=$LTaut>$LTaut</a> в $LTtime)</center></tr></td>\n"; } }

Заранее благодарен.
Сделай по аналогии с предыдущим. 26.08.04 12:49  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
Отредактировано 26.08.04 12:51  Количество правок: 1
<"чистая" ссылка>
И вообще, блин, если хочешь нормальной помощи - дай хотя бы описание структуры форума. Потому как догадываться, что такое топики, темы, разделы, сообщения, что из них выше в иерархии, откуда что берется лично мне - влом (да и не только мне).
Так что будь добр, дай нормальную спецификацию!
И еще - у меня складывается впечатление, что ты где-то взял готовый код и просто хочешь, чтобы его за тебя переделали. Так не пойдет!
Или разубеди меня - опиши, к примеру, что ты делал, чтобы добиться ответа на вопрос, и что у тебя из этого получилось - а мы подскажем, в каком именно месте ты ошибся.
Хм.. 26.08.04 15:01  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
Отредактировано 26.08.04 15:03  Количество правок: 1
<"чистая" ссылка>
> И еще - у меня складывается впечатление, что ты где-то взял
> готовый код и просто хочешь, чтобы его за тебя переделали.
> Так не пойдет!
> Или разубеди меня - опиши, к примеру, что ты делал, чтобы
> добиться ответа на вопрос, и что у тебя из этого получилось
> - а мы подскажем, в каком именно месте ты ошибся.

Да не собираюсь я никого разубеждать, это МОЙ код, это Я часами просиживаю за ним и всего лишь попросил вашей помощи, если тебе влом помочь, то не момогай, я же не заставляю ;) Просто я первый раз пишу такой крупный проект и я знаю, что у меня проблемы с пониманием циклов for...

> Потому как догадываться, что
> такое топики, темы, разделы, сообщения, что из них выше в
> иерархии, откуда что берется лично мне - влом (да и не
> только мне).

Объясняю иерархию форума:
Сначала идет раздел, в разделе находятся топики, а в топике - сообщения... (я думал, это всем понятно)...
Разделы находятся в папке sections. Название раздела (параметр $sect) - название папки. В каждой папке раздела находятся топики в виде файлов $id.top, где $id - номер топа, номера идут от 0 и далее.
Вроде все, если ещё что-то не понятно - скажите, я объясню ;)

Все ещё надеюсь на вашу помощь. Заранее благодарен...
Ну что, разобрался? 30.08.04 14:19  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
Отредактировано 30.08.04 14:20  Количество правок: 1
<"чистая" ссылка>
> Просто я первый раз пишу такой крупный проект
> и я знаю, что у меня проблемы с пониманием циклов for...

Это зря. может, лучше сперва разобраться?

> Объясняю иерархию форума:
> Сначала идет раздел, в разделе находятся топики, а в топике
> - сообщения... (я думал, это всем понятно)...
> Разделы находятся в папке sections. Название раздела
> (параметр $sect) - название папки. В каждой папке раздела
> находятся топики в виде файлов $id.top, где $id - номер
> топа, номера идут от 0 и далее.

А первая строка в файле, насколько я понимаю, помимо всего прочего содержит название топика?

Все ведь достаточно просто:
Ты выводишь топики с нулевого по последний. Нулевой - самый старый. последний - самый свежий. твой код:
for ($a= 0; $a< $b; $a++) 
{...}

---
где $b - общее количество топиков в теме.
Для обратного вывода тебе стоит лишь обратить порядок вывода:
for ($a= ($b-1); $a>=0; $a--) 
{...}

---
и будет тебе счастье ;-)

P.S. пользуйся тегом <рre></рre>, иначе твой код читать не очень удобно.
Нокс.. Я уже мильйон раз объяснял.. 27.08.04 04:15  
Автор: !? <!?> Статус: Member
<"чистая" ссылка>
Перевожу на русский эту строку — for ($a= 0; $a< $b; $a++):
Для переменной $a (начальное значение — 0), при верности условия $a< $b определить цикл {ЦИКЛ} при этом увеличивая $a на один между итерациями.

А теперь переводи то что хочешь на аналогичный «русский» и пиши цикл.
С постраничным переводом туда же.
Да в том-то и проблема, я "расшифровать" имеющееся могу, а... 27.08.04 04:48  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
> Перевожу на русский эту строку — for ($a= 0; $a< $b;
> $a++):
> Для переменной $a (начальное значение — 0), при верности
> условия $a< $b определить цикл {ЦИКЛ} при этом
> увеличивая $a на один между итерациями.
>
> А теперь переводи то что хочешь на аналогичный «русский» и
> пиши цикл.
> С постраничным переводом туда же.

Да в том-то и проблема, я "расшифровать" имеющееся могу, а составить свое, или изменить имеющееся - нет =( поэтому и попросил помочь...)

[offtop]
Дмитрий, выйди на связь ;) Аська, там, ирка - как те удобнее ;)
[/offtop]
Я думаю, что так: 25.08.04 11:14  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
Отредактировано 25.08.04 11:14  Количество правок: 1
<"чистая" ссылка>
Вот этот код:
for ($AT1= 0; $AT1< @ATtheme; $AT1++) 
  {@ATtheme1[$AT1]= @ATtheme[@ATtheme- $AT1- 1];}

---

отвечает за сортировку твоих сообщений. Ты берешь их из текстового файла, в котором последняя запись соответствует самому свежему сообщению и сортируешь их в обратном порядке, так?
Таким образом, у тебя получается, что в массиве ATtheme1 самое свежее сообщение - самое первое.
Следовательно, в твоем скрипте самое верхнее сообщение будет соответствовать самому последнему в файле, то есть самому свежему.
Если тебя такой порядок не устраивает, поменяй этот код на
for ($AT1= 0; $AT1< @ATtheme; $AT1++) 
  {@ATtheme1[$AT1]= @ATtheme[$AT1];}

---

или просто замени все вхождения ATtheme1 на ATtheme
Ещё вопрос ;) 25.08.04 11:25  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Спасибо за совет, теперь все работает.
Теперь меня интересует следующая проблема, точнее, дилема:
я буду вводить на форуме обязательную регистрацию, но я не знаю, что лучше использовать для безопасности аккаунтов - хеш, сформированный из переменных окружения, или куки? а может, есть другие варианты?
проконсультируйте меня, пожалуйста, по этому вопросу...
Сессии 25.08.04 11:48  
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
<"чистая" ссылка>
Я с сессиями работал только на php - там весьма удобно все сделано. На перле с таким вопросом не сталкивался, но не думаю, что все это очень уж сложно ;-)
В общем:
perldoc CGI::Session
perldoc Apache::Session

или вот тут:

perldoc CGI::Session
perldoc Apache::Session
и вообще тут
аккаунтов? Куки не подойдут для хранения аккаутнов, так как... 25.08.04 11:47  
Автор: DgtlScrm Статус: Member
<"чистая" ссылка>
> Теперь меня интересует следующая проблема, точнее, дилема:
> я буду вводить на форуме обязательную регистрацию, но я не
> знаю, что лучше использовать для безопасности аккаунтов -
> хеш, сформированный из переменных окружения, или куки? а
> может, есть другие варианты?

аккаунтов? Куки не подойдут для хранения аккаутнов, так как хранятся на клиенте :) Может ты имеешь ввиду сессии? Так или иначе, на севрере хранить пароли желательно в хеше, хотя с последними новостями про md5 это может не помочь... поэтому скомбинируй хеш с каким-либо линейниы алгоритмом шифрования...

Для сессии генерируй отдельный случайный идентификатор. Его можешь кидать в куки, тогда человек сможет закрыть окно с форумом а когда зайдет на него через 5 минут ему не прийдется снова вводить логин/пароль...
Извините, вы меня не так поняли ;) 25.08.04 13:51  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
> аккаунтов? Куки не подойдут для хранения аккаутнов, так как
> хранятся на клиенте :) Может ты имеешь ввиду сессии? Так
> или иначе, на севрере хранить пароли желательно в хеше,
> хотя с последними новостями про md5 это может не помочь...
> поэтому скомбинируй хеш с каким-либо линейниы алгоритмом
> шифрования...
>
> Для сессии генерируй отдельный случайный идентификатор. Его
> можешь кидать в куки, тогда человек сможет закрыть окно с
> форумом а когда зайдет на него через 5 минут ему не
> прийдется снова вводить логин/пароль...

Я не для сохранения сказал, а для безопасности ;)
Так лучше использовать и хеш, и пароль?
У клиента на компе в том или ином виде должен храниться... 25.08.04 21:56  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
У клиента на компе в том или ином виде должен храниться только его id и хеш. Причём id хранить и не обязательно - при грамотной генерации хеша. Однако я в своё время делал вот как: клиент хранил у себя id и "типа хеш" - который являлся случайно сгенерированным числом. Каждый раз при авторизации это число генерировалось занаво, а через какое-то время теряло свою актуальность (вместе с числом я хранил время последнего его использования).

Что выбрать - кукисы или адресную строку - вопрос спорный. Вообще люди, занимающиеся секьюрити рекомендуют в большинстве своём воздерживаться от использования кукисов, однако я не согласен. Мой собственный опыт показывает, что упереть можно как то, так и другое, но кукисы вообще говаря на порядок удобнее. Ещё можно для перехода по ссылкам можно использовать какую-нибудь функцию javascript, которая будет подставлять во время перехода значение хеша, и будет вызываться так:

<a href="javascript:play('куда_перейти','хеш')">

Таким образом хеш вытянуть станет практически нереально.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach