Описание: Нормальный ли это скрипт? |
Поиск в теме | Версия для печати |
Malcolm |
Отправлено: 16 Сентября, 2006 - 11:49:44
|
Junior Member
Покинул форум
Сообщений всего: 69
Дата рег-ции: Сент. 2006
Откуда: Омск, Россия
Карма 0
|
По идее должен работать и без этой строки, но у меня не пашет почему-то, я проверял.
md5() - хэш функция, типа контрольной цифры. Идея в том, чтобы хранить не сами пароли, а их хэши. В таком случае даже если хэш у тебя утянут, то восстановить пароль по нему будет довольно сложно.
Например, если в переменной $s у тебя пароль, то
выведет хэш этого пароля.
Предположим в $a лежит значение, введенное пользователем. Тогда достаточно сравнить md5($a) c сохраненной хэш строкой.
CODE:if(md5($a)=='098f6bcd4621d373cade4e832627b4f6') include('users/mangust.php');
'098f6bcd4621d373cade4e832627b4f6' - хэш пароля 'test' (md5('test')
|
|
|
Леголегс |
Отправлено: 16 Сентября, 2006 - 13:00:02
|
JS-маньяк
Покинул форум
Сообщений всего: 2109
Дата рег-ции: Июль 2004
Откуда: Липецк
Карма 17
|
UFO пишет:Где "test" и "open" - пароли пользователей (и таких будет много).
Это не безопастно? Много - это сколько? Просто если делать как я написал, то легко можно модифицировать систему и хранить пароли в файле (простом, не пхп) или базе данных. Удобнее опять же: код отдельно, данные отдельно.
Malcolm пишет:Если на сервере отключен magic_quotes, то можно сделать с таким запросом все что угодно, вплоть до выполнения на твоем сервере моего собственного скрипта. Ты не путаешь с перлом? Если не писать таких глупостей как CODE:include($a.".php");
system($a); и т.п. то всё будет нормально.
Malcolm пишет:$a = $_POST['a']; На некоторых хостингах за каким-то хреном включают register_globals, т.е. подобные строчки выполненны по умолчанию.
|
|
|
UFO |
Отправлено: 17 Сентября, 2006 - 07:48:01
|
Full Member
Покинул форум
Сообщений всего: 212
Дата рег-ции: Янв. 2005
Карма 0
|
Леголегс пишет:Много - это сколько?
См. выше, я писал. Максимум 100, но они будут появляется постепенно, а не одним разом. И то сомневаюсь, что будет 100. 100 - это теоретический предел.
Цитата:Просто если делать как я написал, то легко можно модифицировать систему и хранить пароли в файле (простом, не пхп) или базе данных. Удобнее опять же: код отдельно, данные отдельно.
Да, но если пароли или же их хэши хранить в одном файле, то этот файл можно будет стянуть и все пароли могут оказаться в чужих руках. Не лучше ли прямо в скрипте? |
|
|
Леголегс |
Отправлено: 17 Сентября, 2006 - 13:10:31
|
JS-маньяк
Покинул форум
Сообщений всего: 2109
Дата рег-ции: Июль 2004
Откуда: Липецк
Карма 17
|
UFO пишет:Да, но если пароли или же их хэши хранить в одном файле, то этот файл можно будет стянуть и все пароли могут оказаться в чужих руках. Не лучше ли прямо в скрипте? Скрипт точно так же могут утянуть.
UFO пишет:Максимум 100, но они будут появляется постепенно, а не одним разом. И то сомневаюсь, что будет 100. 100 - это теоретический предел. Сто - это порядком. еслиб до десяти-двадцати, то ещё не страшно в коде хранить, а так делай лучше в файле. Тем более, что это не так уж и сложно, слушай Ray Wenа |
|
|
SviMik |
Отправлено: 17 Сентября, 2006 - 15:22:33
|
Где-то там...
Покинул форум
Сообщений всего: 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';
Всё это лишь один из возможных вариатов. Это не готовый работоспособный код а только алгоритм |
|
|
UFO |
Отправлено: 04 Октября, 2006 - 10:19:01
|
Full Member
Покинул форум
Сообщений всего: 212
Дата рег-ции: Янв. 2005
Карма 0
|
Malcolm пишет:1) Подумай, что будет, если я введу вот такой пароль:
??
Фильтровать примерно так:
CODE:$a = $_POST['a'];
$a = preg_replace("/[^a-z]{10}/i","",$a);
3) В данном случае нужно задать массив с паролями и проверять в нем. Если в массиве не нашел, тогда echo "Пароль неверный";
Решил наконец таки вернутся к системе.
Первый вопрос.
CODE:$a = preg_replace("/[^a-z]{10}/i","",$a);
Что здесь значит "i"?
Второй вопрос, как можно сделать так, чтобы если пользователь вводит в поле некоторые запрещенные символы (например, "==", "=", "-", "(", "", "*", "@" и т.д.), то выводится надпись "Недопустимые символы" и скрипт их не воспринимает к выполнению, игнорирует. |
|
|
UFO |
Отправлено: 04 Октября, 2006 - 10:21:53
|
Full Member
Покинул форум
Сообщений всего: 212
Дата рег-ции: Янв. 2005
Карма 0
|
Malcolm пишет:По идее должен работать и без этой строки, но у меня не пашет почему-то, я проверял.
md5() - хэш функция, типа контрольной цифры. Идея в том, чтобы хранить не сами пароли, а их хэши. В таком случае даже если хэш у тебя утянут, то восстановить пароль по нему будет довольно сложно.
Например, если в переменной $s у тебя пароль, то
выведет хэш этого пароля.
Предположим в $a лежит значение, введенное пользователем. Тогда достаточно сравнить md5($a) c сохраненной хэш строкой.
CODE:if(md5($a)=='098f6bcd4621d373cade4e832627b4f6') include('users/mangust.php');
'098f6bcd4621d373cade4e832627b4f6' - хэш пароля 'test' (md5('test' )
Второй вопрос.
Если пароли хранить в хэше (неважно где - файле, массиве и т.п., но в текстовом варианте, не базе), то нужно для каждого пароля генерировать хэш вручную, записывать этот хэш в файл/массив и т.п. с допустимимы хэшами? Может ли скрипт сам сгенерировать хэш и спрятать пароль, если я однажды введу сам пароль в список паролей? |
|
|
|
Поиск в теме | Версия для печати |
Страниц (3): « 1 [2] 3 » |
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0, скрытых: 0) |
« PHP/Perl » |
Все гости форума могут просматривать этот раздел. Только администраторы и модераторы могут создавать новые темы в этом разделе. Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
|
|
|