Реклама

Рекомендации программисту веб-сервисов

Проверять пароли при регистрации на минимальную длину, присутствие символов разного регистра и цифр. Принуждать пользователя использовать знаки пунктуации и другие неалфавитные символы я не советую. Еще полезно проверять что слово не находится в словарях. Так что ключевые слова: длина, переменный регистр, цифры и по словарю. Проверять при регистрации, если она доступна online и при смене пароля пользователем.

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

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

#!/usr/bin/perl
$tst = "pasSword3";
$MINPASSL = 9;
if (($tst ne uc($tst)) && ($tst ne lc($tst))
   && (length($tst) >= $MINPASSL) && ($tst =~ m/\d/))
{
print "good password";
} else {
print "bad password";
}

Возможная проверка на то что выбранный пользователем пароль не находится в словаре

#!/usr/bin/perl
$tst = "pasSword3";
$dictFname = 'passdict.txt'; # все пароли в словаре в нижнем регистре!
my(@dict);
my($word, $tstlc);
$found = 0;
open(FH, "<$dictFname") || die "can't find dictionary file $dictFname";
@dict = <FH>;
close(FH);
chomp(@dict);
$tstlc = lc($tst);
foreach $word (@dict)
{
	if ($word eq $tstlc)
	{
		$found = 1;
		last;
	}
}
if ($found == 1)
{
	print "bad password";
} else {
	print "good password";
}


Perl удобен тем что ходит на всех платформах. Приведенные наброски легко адаптировать для работы как на CGI так и в консоли.

Кроме проверки на стойкость пароля, в веб-сервисах полезно вести лог неудачных попыток логона, а также устанавливать запрет на вход с определенного IP после 3-5 неудачных попыток на время в 10-15 секунд. Это стандартные защитные меры удаленных систем.

Почему я советую такое малое время задержки после неудачных логонов? Да просто забаненный IP может оказаться прокси-сервером. И кроме злоумышленника через этот прокси к вам могут пытаться залогиниться добропорядочные пользователи. Задержка здесь лишь снизит скорость подбора до неприемлемой. Ни один злоумышленник не станет подбирать пароль со скоростью 10-20 паролей в минуту.


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

Мне кажется вполне логичной такая схема. Есть только несколько паролей в голове Каждый их них качественный. Придуман вручную, с учетом запоминаемости и быстрой набираемости. Это пароли к локальным к системам, парольному менеджеру, и может быть паре удаленных систем. Например к online-почтовику. Эти пароли также отмечены в парольном менеджере. Пароль к его базе сохранен где-нибудь еще. В банке, сейфе.

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

Все пароли, включая те несколько, что в голове, периодически меняются. Эта схема работает у меня уже несколько лет, что на мой взгляд даже важнее ее логичности.



Статья взята с сайта www.phormula.nm.ru

Реклама

За все время существования сервиса сгенерировано более 1 миллиарда паролей
Онлайн генератор паролей - сайт работает с 2007 года