Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Скрипт авторизации [2]
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (3): « 1 [2] 3 »   

> Описание: Нормальный ли это скрипт?
Malcolm
Отправлено: 16 Сентября, 2006 - 11:49:44
Post Id



Junior Member


Покинул форум
Сообщений всего: 69
Дата рег-ции: Сент. 2006  
Откуда: Омск, Россия

Карма 0




По идее должен работать и без этой строки, но у меня не пашет почему-то, я проверял.

md5() - хэш функция, типа контрольной цифры. Идея в том, чтобы хранить не сами пароли, а их хэши. В таком случае даже если хэш у тебя утянут, то восстановить пароль по нему будет довольно сложно.
Например, если в переменной $s у тебя пароль, то
CODE:
echo md5($s)
выведет хэш этого пароля.

Предположим в $a лежит значение, введенное пользователем. Тогда достаточно сравнить md5($a) c сохраненной хэш строкой.
CODE:
if(md5($a)=='098f6bcd4621d373cade4e832627b4f6') include('users/mangust.php');


'098f6bcd4621d373cade4e832627b4f6' - хэш пароля 'test' (md5('test'Подмигивание)
 
 Top
Леголегс Администратор
Отправлено: 16 Сентября, 2006 - 13:00:02
Post Id



JS-маньяк


Покинул форум
Сообщений всего: 2109
Дата рег-ции: Июль 2004  
Откуда: Липецк

Карма 17




UFO пишет:
Где "test" и "open" - пароли пользователей (и таких будет много).
Это не безопастно?
Много - это сколько? Просто если делать как я написал, то легко можно модифицировать систему и хранить пароли в файле (простом, не пхп) или базе данных. Удобнее опять же: код отдельно, данные отдельно.
Malcolm пишет:
Если на сервере отключен magic_quotes, то можно сделать с таким запросом все что угодно, вплоть до выполнения на твоем сервере моего собственного скрипта.
Ты не путаешь с перлом? Улыбка Если не писать таких глупостей как
CODE:
include($a.".php");
system($a);
и т.п. то всё будет нормально.
Malcolm пишет:
$a = $_POST['a'];
На некоторых хостингах за каким-то хреном включают register_globals, т.е. подобные строчки выполненны по умолчанию.
 
 Top
Malcolm
Отправлено: 16 Сентября, 2006 - 13:11:03
Post Id



Junior Member


Покинул форум
Сообщений всего: 69
Дата рег-ции: Сент. 2006  
Откуда: Омск, Россия

Карма 0




Может и путаю. Негде проверить сейчас. Администрирование IPB приучает фильтровать все подряд, лишним не будет. Улыбка

register_globals отключен у меня, теперь понятно почему не работало.
 
 Top
UFO
Отправлено: 17 Сентября, 2006 - 07:48:01
Post Id



Full Member


Покинул форум
Сообщений всего: 212
Дата рег-ции: Янв. 2005  

Карма 0




Леголегс пишет:
Много - это сколько?

См. выше, я писал. Максимум 100, но они будут появляется постепенно, а не одним разом. И то сомневаюсь, что будет 100. 100 - это теоретический предел.
Цитата:
Просто если делать как я написал, то легко можно модифицировать систему и хранить пароли в файле (простом, не пхп) или базе данных. Удобнее опять же: код отдельно, данные отдельно.

Да, но если пароли или же их хэши хранить в одном файле, то этот файл можно будет стянуть и все пароли могут оказаться в чужих руках. Не лучше ли прямо в скрипте?
 
 Top
Ray Wen Администратор
Отправлено: 17 Сентября, 2006 - 08:52:35
Post Id



Собиратель шишек...


Покинул форум
Сообщений всего: 2602
Дата рег-ции: Янв. 2005  
Откуда: Волгоград

Карма 21




UFO
Не лучше, хотябы по тому что отредактировать можно будет только вручную... Для примера посмотри как сделано на ExBB хранение данных пользователей, вставляешь впереди
CODE:
<?die;?>
и пусть попробуют утянуть... Подмигивание Лучше конечно в БД держать, тогда вопрос отпадает сам собой...
 
 Top
Леголегс Администратор
Отправлено: 17 Сентября, 2006 - 13:10:31
Post Id



JS-маньяк


Покинул форум
Сообщений всего: 2109
Дата рег-ции: Июль 2004  
Откуда: Липецк

Карма 17




UFO пишет:
Да, но если пароли или же их хэши хранить в одном файле, то этот файл можно будет стянуть и все пароли могут оказаться в чужих руках. Не лучше ли прямо в скрипте?
Скрипт точно так же могут утянуть.
UFO пишет:
Максимум 100, но они будут появляется постепенно, а не одним разом. И то сомневаюсь, что будет 100. 100 - это теоретический предел.
Сто - это порядком. еслиб до десяти-двадцати, то ещё не страшно в коде хранить, а так делай лучше в файле. Тем более, что это не так уж и сложно, слушай Ray Wenа
 
 Top
SviMik Супермодератор
Отправлено: 17 Сентября, 2006 - 15:22:33
Post Id



Где-то там...


Покинул форум
Сообщений всего: 3538
Дата рег-ции: Окт. 2004  
Откуда: Tallinn, Estonia

Карма 4




Я думаю, авторы форума не обидятся. Када мне надо что-то хранить в файлах, я из форума стягиваю функции
CODE:
function get_file($filename) {
if ( $fp = @fopen($filename,'r') ) {
@fseek($fp,8);
$str = @fread($fp,filesize($filename)-8);
@fclose($fp);
return unserialize($str); #substr($str,8,strlen($str)) );
}
return array();
}

function save_file($filename,$arr){
$fp = fopen($filename,'w');
fwrite($fp,'<?die;?>'.serialize($arr));
fclose($fp);
}

ибо хорошо сделано. Улыбка

Пароли храним в массиве. Например так:
CODE:
$users['vasja']='123';
$users['petja']='qwerty';

Проверка:
CODE:
if(array_key_exists($_POST['login'], $users) && $_POST['pass']==$users[$_POST['login']]){
include('admin.php');
}else{die('Password incorrect');}


Сохранение списка: save_file('userslist.php',$users);
Чтение: $users=get_file('userslist.php'Подмигивание;

Всё это лишь один из возможных вариатов. Это не готовый работоспособный код а только алгоритм Улыбка
 
 Top
UFO
Отправлено: 04 Октября, 2006 - 10:19:01
Post Id



Full Member


Покинул форум
Сообщений всего: 212
Дата рег-ции: Янв. 2005  

Карма 0




Malcolm пишет:
1) Подумай, что будет, если я введу вот такой пароль:
CODE:
1=1 OR ''
??
Фильтровать примерно так:
CODE:
$a = $_POST['a'];
$a = preg_replace("/[^a-z]{10}/i","",$a);


3) В данном случае нужно задать массив с паролями и проверять в нем. Если в массиве не нашел, тогда echo "Пароль неверный";

Решил наконец таки вернутся к системе.
Первый вопрос.
CODE:
$a = preg_replace("/[^a-z]{10}/i","",$a);

Что здесь значит "i"?
Второй вопрос, как можно сделать так, чтобы если пользователь вводит в поле некоторые запрещенные символы (например, "==", "=", "-", "(", "Подмигивание", "*", "@" и т.д.), то выводится надпись "Недопустимые символы" и скрипт их не воспринимает к выполнению, игнорирует.
 
 Top
UFO
Отправлено: 04 Октября, 2006 - 10:21:53
Post Id



Full Member


Покинул форум
Сообщений всего: 212
Дата рег-ции: Янв. 2005  

Карма 0




Malcolm пишет:
По идее должен работать и без этой строки, но у меня не пашет почему-то, я проверял.

md5() - хэш функция, типа контрольной цифры. Идея в том, чтобы хранить не сами пароли, а их хэши. В таком случае даже если хэш у тебя утянут, то восстановить пароль по нему будет довольно сложно.
Например, если в переменной $s у тебя пароль, то
CODE:
echo md5($s)
выведет хэш этого пароля.

Предположим в $a лежит значение, введенное пользователем. Тогда достаточно сравнить md5($a) c сохраненной хэш строкой.
CODE:
if(md5($a)=='098f6bcd4621d373cade4e832627b4f6') include('users/mangust.php');


'098f6bcd4621d373cade4e832627b4f6' - хэш пароля 'test' (md5('test'Подмигивание)

Второй вопрос.
Если пароли хранить в хэше (неважно где - файле, массиве и т.п., но в текстовом варианте, не базе), то нужно для каждого пароля генерировать хэш вручную, записывать этот хэш в файл/массив и т.п. с допустимимы хэшами? Может ли скрипт сам сгенерировать хэш и спрятать пароль, если я однажды введу сам пароль в список паролей?
 
 Top
persei
Отправлено: 08 Октября, 2006 - 06:50:15
Post Id



Member


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июнь 2006  
Откуда: Ульяновск.УлГТУ

Карма 0




UFO пишет:
Если пароли хранить в хэше (неважно где - файле, массиве и т.п., но в текстовом варианте, не базе), то нужно для каждого пароля генерировать хэш вручную, записывать этот хэш в файл/массив и т.п. с допустимимы хэшами? Может ли скрипт сам сгенерировать хэш и спрятать пароль, если я однажды введу сам пароль в список паролей?


а какой смысл тогда брать хеш пароля? ты понимаешь сам смысл хеширования? ведь пароли можно сравнивать в чистом виде. весь смысл состоит в том что если базу с паролями в чистом виде украдут - плакали аккаунты. а если украдут базу с хешами - на расшифровку хеша может уйти от 5 дней до года...
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 4 (гостей: 4, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0537]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33