Язык скриптования сайтов Parser 3

       

Mathcrypt


crypt. Хеширование паролей


^math:crypt[password;salt]


Хеширует password с учетом salt.

Параметры:

·password - исходная строка;  



·salt - строка, определяющая алгоритм хеширования и вносящая элемент случайности в результат хеширования, состоит из начала и тела. Начало определяет алгоритм хеширования, тело вносит элемент случайности. Если тело не будет указано, Parser сформирует случайное.  


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

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

Внимание: обязательно задавайте случайное тело salt, или позвольте Parser сделать это за вас, попросту не указывая тело salt, указывая только начало salt.

Таблица доступных алгоритмов:

Алгоритм

Описание

Начало salt

Тело "salt"

MD5

встроен в Parser, доступен на всех платформах

$apr1$

до 8 случайных букв (в любом регистре) или цифр

MD5

если поддерживается операционной системой (UNIX)

$1$

до 8 случайных букв (в любом регистре) или цифр

DES

если поддерживается операционной системой (UNIX)

(нет)

2 случайных буквы (в любом регистре) или цифры

другие

какие поддерживаются операционной системой (UNIX)

читайте документацию на вашу операционную систему, функция crypt

читайте документацию на вашу операционную систему, функция crypt

<
br>

Внимание: в Parser для использования в тексте символа '$' его необходимо предварить символом '^'.

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

Пример создания .htpasswd файла

@main[]

$users[^
table::create{name   password

alice   xxxxxx

bob   yyyyyy

}]

$htpasswd[^table::create[nameless]{}]

^users.menu{

    ^htpasswd.append{$users.name:^math:crypt[$users.password;^$apr1^$]}

}

^htpasswd.save[nameless;.htpasswd-parser-test]



Пример проверки пароля

$right[123]

$from_user[123]

$crypted[^math:crypt[$right;^$apr1^$]]

#обратите внимание на то, что $crypted при каждом обращении разный

$crypted
<br>

^if(^math:crypt[$from_user;$crypted] 
eq $crypted){

    Казнить нельзя, помиловать

}{

    Казнить, нельзя помиловать

}

Подробная информация о MD5 доступна здесь: http://www.ietf.org/rfc/rfc1321.txt

Copyright © 1997?2004 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 12.02.2004

Содержание раздела