Перейти к контенту

Дневник программиста

  • записей
    60
  • комментариев
    309
  • просмотров
    226 855

Пароль на форум


Arhar

5 489 просмотров

Не писать в куки.

Если украли куки, то и зайдут в запароленный форум.

Так что переделал так, чтобы было как в админке, мд5(пароль) должен быть всегда в адресной строке

16 комментариев


Рекомендуемые комментарии

А всё-таки не true. Будет дыра покруче чем с результатами поиска, если пользователи друг другу начнут такие ссылки давать. В админке всё-таки это ещё с валидными сессиями в БД сравнивается.

 

Имхо лучше в куки писать тогда пароль+IP в зашифрованном виде:

md5(md5($pass).md5($member_ip))

Так он будет реже теряться и можно не бояться что уведут.

Можно и проверку по юзер-агент присобачить, тогда ещё + ID юзера:

md5(md5($pass).md5($member_id).md5($member_uagent))

Ссылка на комментарий
тогда возникает проблема

надо писать куда-то в базу валидый ип, с которого этот хэш будет заходить... а,нет, ип пишется в таблицу сессий

все

Ага.

 

P.S. Лучше по второму варианту, чтобы при смене IP не слетала, причём проверку юзерагента можно делать только если такая настройка стоит, ID юзера и так вполне хватить должно.

 

P.P.S. Итого правка в одной функции, которая пароль сверяет, да? (По крайней мере у меня это одна функция.)

Ссылка на комментарий

получилась добавка

class_session.php

			$this->ipsclass->DB->simple_construct( array( 'select' => 'id, member_id, running_time, location, ip_address',
													  'from'   => 'sessions',
													  'where'  => "id='".$session_id."'".$query
											 )	  );

					$this->session_id		= $result['id'];
				$this->session_user_id   = $result['member_id'];
				$this->last_click		= $result['running_time'];
				$this->location		  = $result['location'];
				$this->ip_address		= $result['ip_address'];
				unset($result);
				return;

 

изменения

index.php

if(md5(md5($ipsclass->forums->forum_by_id[$ipsclass->input['f']]['password']).md5($ipsclass->sess->ip_address))!=$ipsclass->f_password)
{
$ipsclass->f_password='';
}

class_forums.php

	function forums_compare_password( $fid )
{
	$cookie_pass = $this->ipsclass->input['f_password'];//$this->ipsclass->my_getcookie( 'ipbforumpass_'.$fid );

	if (trim($cookie_pass) == md5(md5($this->forum_by_id[$fid]['password']).md5($this->ipsclass->sess->ip_address)) )
	{
		return TRUE;
	}
	else
	{
		return FALSE;
	}
}

forums.php

	function authenticate_user()
{
	if ($this->ipsclass->input['f_password'] == "")
	{
		$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'pass_blank' ) );
	}

	if ( $this->ipsclass->input['f_password'] != $this->forum['password'] )
	{
		$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'wrong_pass' ) );
	}


	//$this->ipsclass->my_setcookie( "ipbforumpass_".$this->forum['id'], md5($this->ipsclass->input['f_password']) );
	$this->ipsclass->f_password = md5(md5($this->ipsclass->input['f_password']).md5($this->ipsclass->ip_address));

	$this->ipsclass->print->redirect_screen( $this->ipsclass->lang['logged_in'] , "showforum=".$this->forum['id']."&f_password=".$this->ipsclass->f_password );
}

 

SnS++;

Ссылка на комментарий

Так там ещё ИД юзера ;) При такой комбинации хешей хрен подберёшь.

 

Судя по коду ты меня не понял... Я предлагаю в куки писать md5(md5($pass).md5($member_id).md5($member_uagent)), сам же говорил что нехорошо пароль там в открытом виде держать.

 

Added: Да, именно это и хотел сказать.

Ссылка на комментарий
Если не писать в куки — прийдётся каждый раз пароль заново вводить, юзабилити падает. Причём не только при зхакрытии/открытии браузера, но и если переходишь в другой форум и потом возвращаешься.
Ссылка на комментарий

ну украли у меня пользователя

и зашли через него

у него есть модерский раздел - он в него заходит

а если украл, а пароля не знает, и в куках тож пароля нет - капец

 

вообще в восьмидесятые годы на ядерных ракетах пароль меняли два раза в неделю)

Ссылка на комментарий

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

 

А вариантов всё равно множество, как это сделать можно.

 

P.S. Сравнил жопу с пальцем :D

Ссылка на комментарий
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.