Рейтинг@Mail.ru


Генератор паролей на PHP, Perl, функция WordPress

Надежный пароль — надежная защита! Это каждый должен знать и понимать. Но зачастую многим оказывается трудно придумать достаточно сложный и надежный пароль из 12-20 символов (а то и больше), тем более, когда их приходится заводить много. Возможно это из-за нехватки времени или воображения, или попросту из-за лени. Для решения таких проблем и неудобств на помощь могут прийти скриптовые генераторы паролей.
Скрипты генераторов паролей на PHP, Perl, WordPress

Генераторы паролей бывают программные, скриптовые, аппаратные и т.д. Причем этого добра предостаточно в сети интернет. Но все же иметь всегда под рукой свой собственный генератор лучше, чем онлайн-вариант. Кто знает точно, что сайты онлайн-генераторов паролей не сохраняют сгенерированные пароли в своих базах данных для последующего их мошеннического использования? Так что все свое, что «ближе к телу», все-таки надежнее. Вот поэтому предлагаю вашему вниманию несложные скрипты генераторов паролей на языках PHP и Perl. Также познакомимся и с одной из встроенных функцией WordPress, которая служит для тех же целей.

Генератор паролей на PHP

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

Страница генератора паролей на PHP

Одно лишь замечание по поводу использования этого PHP-скрипта — в скрипте нет проверок входных данных (запроса post) на предмет их корректности и допустимых значений. Поэтому, если Вы захотите использовать этот скрипт как шаблон для своего генератора паролей, то рекомендую доработать его, добавив обработку и проверку входных данных функции generate_password.

<?php
function generate_password( $length = 16, $special_chars = false, $extra_special_chars = false ) {

	if( $_POST[length] !== '' ) $length = $_POST[length];
	if( $_POST[special_chars] === 'on' ) $special_chars = true;
	if( $_POST[extra_special_chars] === 'on' ) $extra_special_chars = true;

	$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

	if ( $special_chars )
		$chars .= '!@#$%^&*()';

	if ( $extra_special_chars )
		$chars .= '-_[]{}<>~`+=,.;:/?|';

	$password = "";

	for( $i = 0; $i < $length; $i++ ) {
		$index =  mt_rand( 0, strlen($chars) - 1 );
		$password .= substr( $chars, $index, 1 );
	}

	return $password;
}

if( !$_POST[length] || $_POST[length] === '' )
	$length = 16;
else
	$length = $_POST[length];

if( $_POST[special_chars] === 'on' )
	$checkbox_special_chars = 'checked';
else
	$checkbox_special_chars = '';

if( $_POST[extra_special_chars] === 'on' )
	$checkbox_extra_special_chars = 'checked';
else
	$checkbox_extra_special_chars = '';
?>

<html>
<head>
<meta charset="utf-8">
	<title>Генератор паролей</title>
<style>
	h1 { font-weight: bold; }
	#pascode { color: red; font-size: 200%; }
  </style>
</head>
<body>
<h1>Генератор паролей</h1>
<form method=post>
	<b>Новый пароль</b><br />
	<input id="pascode" type="text" name="pascode" size="30" value="<?php echo generate_password(); ?>"><br /><br />
	<input type=text name=length size="3" value="<?php echo $length; ?>"> длина пароля<br /><br />
	<input type="checkbox" name="special_chars" <?php echo $checkbox_special_chars; ?> /> спец. символы<br />
	<input type="checkbox" name="extra_special_chars" <?php echo $checkbox_extra_special_chars; ?> /> экстра спец. символы<br />
	<p><input type=submit value="Генерировать пароль"></p>
</form>

</body>
</html>

Генератор паролей WordPress

CMS WordPress начиная с версии 2.5 содержит в своем составе функцию wp_generate_password для генерации паролей (объявляется в файле \wp-includes\pluggable.php). Поэтому те, у кого есть свой блог или сайт на WordPress могут использовать уже готовое решение.

Генератор паролей на WP можно использовать например в плагинах, темах или создать «личную» страницу со своим шаблоном специально для генерации паролей.

wp_generate_password( $length = 16, $special_chars = true, $extra_special_chars = true );

Входные параметры:

  • $length — длина пароля;
    (по умолчанию 16 символов)
  • $special_chars — не алфавитные и не цифровые символы;
    (по умолчанию включено)
  • $extra_special_chars — дополнительные не алфавитные и не цифровые символы;
    (по умолчанию включено)

Если какой-то из параметров не будет указан при вызове функции, или вообще она будет вызвана без входных параметров, то функция будет использовать значения параметров по умолчанию.

Примеры вызова функции wp_generate_password

echo wp_generate_password();

- получим пароль длиной в 16 символов (это значение по умолчанию), включающий всевозможные алфавитные, цифровые и другие печатные символы, включая дополнительные;

echo wp_generate_password( 20 );

- получим пароль длиной в 20 символов, включающий всевозможные алфавитные, цифровые и другие дополнительные символы;

echo wp_generate_password( 20, false, false );

- генерируется пароль длиной в 20 символов, в котором будут присутствовать только алфавитные (заглавные и строчные) и цифровые символы от 0 до 9;

Внимание!
Функция wp_generate_password() возвращает случайный пароль в текстовом виде. Будьте внимательны при выводе сгенерированного пароля на страницу HTML, т.к. при использовании дополнительных символов, пароль может не отобразиться корректно из-за того, что браузер может посчитать некоторые комбинации их них за коды разметки и просто пропустить либо изменить их.

Чтобы избежать такой неприятности лучше выводите сгенерированные пароли в текстовые поля ввода, такие как <input>, <textarea> или в текстовый файл. Пример вывода строки пароля в текстовые поля ввода можно посмотреть выше, в скрипте Генератор паролей на PHP.

 

Генератор паролей на Perl

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

#!/usr/bin/perl -w
#
# Генератор паролей
#

use strict;

sub randomPassword {

    my $password;
    my $_rand;

    my $password_length = $_[0];

    if (!$password_length) {
        $password_length = 16;
    }

    my $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    my $special_chars = '!@#$%^&*()';
    my $extra_special_chars = '-_ []{}<>~`+=,.;:/?|';

    if($_[1] == 2 ){
        $chars .= $special_chars;
    }

    if($_[1] == 3 ){
        $chars .= $special_chars . $extra_special_chars;
    }

    my @chars1 = $chars =~ /./g;

    my $chars1_size = @chars1;

    srand;

    for (my $i=0; $i <= $password_length-1; $i++) {
        $_rand = int(rand $chars1_size);
        $password .= $chars1[$_rand];
    }

    return $password;

}

my $res_password = randomPassword(12,2);

print "************************\n\n";
print "Password: ", $res_password;
print "\n\n";
print "************************\n";

Входные параметры функции randomPassword(12,2):

  • первый параметр — длина пароля (числовое значение);
  • второй параметр — тип набора символов (числовое значение):
    1 — алфавитные и цифровые символы;
    2 — алфавитные, цифровые, не алфавитные и не цифровые символы;
    3 — алфавитные, цифровые, дополнительные не алфавитные и не цифровые символы;

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

print "Password: ", $res_password;

нужно будет использовать соответствующие функции.

 

Надежный пароль — спокойствие ваших нервов и головная боль для мошенников!

 

Метки: Perl, PHP, WordPress, генератор, пароль, скрипт

Поделитесь материалом с другими, воспользуйтесь этими кнопками:
Получать обновления и новые материалы блога по E-mail

10 комментариев к “Генератор паролей на PHP, Perl, функция WordPress”

  1. Анна К.:

    Ой, Владимир, это выглядит таким сложным…
    Мне кажется, придумать подобную абракадабру можно и самому — главное потом вспомнить этот пароль.
    После того, как у меня вдруг перестала работать флешка (пропало все, что на ней было) — я записываю пароли карандашом в блокнот. Как-то не очень доверяю сервисам по хранению паролей, и на своем ноутбуке тоже их не храню.

    • Конечно, придумать подобную абракадабру можно и самому, но если часто нужно придумывать, например при регистрации пользователей где нибудь, то лучше все же использовать скрипты, особенно когда пользователей сотни и больше.

  2. Gogch:

    Я извиняюсь конечно за свою некомпетентность в PHP, но вот вопрос — почему в скрипте часто встречаются 3 знака равенства в сравнении? Например тут

    if( $_POST[special_chars] === 'on' )
    
  3. Анна К.:

    Владимир, может вопрос и нелепый, но все же.
    А можно ли на своем сайте сделать отдельную страницу — генератор паролей для всех желающих?
    Как это делается и будет ли это большой нагрузкой на хостинг?

    • Конечно же можно. Всего лишь понадобится создать страницу со своим шаблоном — это несложно. Для WordPress: делаете копию файла «Page Template» (page.php), изменяете его, т.е. добавляете код генератора пароля, только не забудьте в самом начале кода вставить метку, что это шаблон страницы, например

      <?php
      // Template Name: Генератор Пароля
      ...
      ...
      ?>
      

      Затем создаете стандартным способом страницу в консоли WordPress и назначаете ей персональный «Шаблон», созданный на основе page.php и размещенный в каталоге вашей темы.

      Нагрузка на сервер будет большая, если одновременно много посетителей будут генерировать пароли (это могут быть и боты). Для предотвращения этого нужно будет в код что-нибудь добавить, что будет например ограничивать кол-во генераций с одного IP в минуту или что-то типа такого.

      • Анна К.:

        1. А что, и боты могут генерить пароли?!? Просто чтобы сервер нагружать, для этого?
        2. Спасибо. На своем втором сайте (не основном) в принципе попробую генератор паролей сделать — думаю, посетителям должно понравиться.

        • 1. Да пароли тут не при чем, а вот то, что форма для ввода и отправки данных на сервер будет дополнительная, то и боты ее могут «терзать». Боты все что угодно могут делать, все зависит от того, под что их программисты «заточили».
          2. Вот можете посмотреть пример страницы генератора пароля http://4remind.ru/generator-paroley-1

          • Анна К.:

            Посмотрела, здорово :) Так терзают эту страницу боты?

          • Боты в основном «глупые», но если их создатели захотят, то конечно могут и затерзать. Однако на любой яд (ну почти на любой) есть противоядие :)

Оставить комментарий

Уважаемые посетители, пожалуйста, пишите осмысленные и исчерпывающие комментарии. Короткие фразы типа «спасибо автору», «возьму на заметку», «мне помогло» и т.п. будут удаляться. Исключение, когда Вы отвечаете на чей-то вопрос или благодарите за помощь.

Ссылки на Ваш сайт получат статус DoFollow после третьего комментария.

Для вставки кода в комментарии можно использовать BB-коды:
[text] [/text], [php] [/php], [html] [/html]

Подписаться на обновления блога 4remind.ru по RSS
Новости блога в социальных сетях

4remind.ru - персональный блог вебмастера

Rambler's Top100
Рейтинг@Mail.ru


Наверх
Наверх
Яндекс.Метрика