18-02-2013, 18:55 Посмотрели: 2662 Добавил: Alex V

Создание индикатора сложности пароля на PHP


Каждый владелец сайта хочет обезопасить своих посетителей и пользователей от взлома и подбора пароля. Конечно в большинстве случаев взлома аккаунтов виноват сам пользователь, со своим простым паролем «123456» «qwerty» и даже ваша дата рожденья например 100791 не является надежной.

Ещё во времена массового брута (подбор пароля) ICQ я тоже не прошел мимо и увлекся немного этим топорным методом “взлома”. И хоть тогда у меня не получилось подобрать и одного пароля, но кое-что я для себя почерпнул. Я скачал достаточно баз, которые содержали самые простые пароли (и их используют более половины пользователей в сети ) и там были и даты рождения и имена в разных формах и т.д.

Это был ценный опыт с которого я понял одну истину, использовать слабые пароли = быть кроликом который находиться у охотника под прицелом. Так давайте создадим индиктор сложности пароля, который будет работать без перезагрузки страницы. Кстаи кто проходил html обучение то сможет очень красиво оформить визаульный индекатор.

1. Создадим файл form.php с таким содержанием:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
  <script type="text/javascript">
    function toggle_pass(passid) {
    if (window.XMLHttpRequest) {
    http = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
    http = new ActiveXObject("Microsoft.XMLHTTP");
    }
    handle = document.getElementById(passid);
    var url = 'ajax.php?';
    if(handle.value.length > 0) {
    var fullurl = url + 'do=check_password_strength&pass=' + encodeURIComponent(handle.value);
    http.open("GET", fullurl, true);
    http.send(null);
    http.onreadystatechange = statechange_password;
    }else{
    document.getElementById('password_strength').innerHTML = '';
    }
    }
  function statechange_password() {
    if (http.readyState == 4) {
    var xmlObj = http.responseXML;
    var html = xmlObj.getElementsByTagName('result').item(0).firstChild.data;
    document.getElementById('password_strength').innerHTML = html;
    }
    }
  </script>
  <style type="text/css">
    input {
    border: 1px solid #000000;
    padding: 5px; 
    }
    #password_strength {
    width: 250px;
    background: #cccccc;
    }
    #password_bar {
    font-size: 11px;
    background: #7FFF00; 
    border: 1px solid #cccccc;
    padding: 5px;
    }
  </style> 
  
  </head>
  <body>
    <input id="pass" type="password" name="password" onchange="toggle_pass('pass')" /><br /><br />
    <strong>Сложность пароля</strong>:<br />
    <div id="password_strength"> </div>
    </body>
    </html>


2. Создаем файл ajax.php, который будет проверять пароль на сложность и показывать результат на странице без перезагрузки страницы:

 <?php 
  $do = $_GET['do']; 
  switch($do) { 
      case 'check_password_strength': 
          $password = $_GET['pass']; 
          $strength = 0; 
          // буквы (маленькие) 
          if(preg_match("/([a-z]+)/", $password)) { 
              $strength++; 
          } 
          // буквы (большие) 
          if(preg_match("/([A-Z]+)/", $password)) { 
              $strength++; 
          } 
          // числа 
          if(preg_match("/([0-9]+)/", $password)) { 
              $strength++; 
          } 
          // символы 
          if(preg_match("/(W+)/", $password)) { 
              $strength++; 
          } 
          header('Content-Type: text/xml'); 
          header('Pragma: no-cache'); 
          echo '<?xml version="1.0" encoding="UTF-8"?>'; 
          echo '<result><![CDATA['; 
          switch($strength) { 
              case 1: 
  
                  echo '<div style="width: 25%" id="password_bar">Очень легкий</div>'; 
              break; 
              case 2: 
                  echo '<div style="width: 50%" id="password_bar">Легкий</div>'; 
              break; 
              case 3: 
                  echo '<div style="width: 75%" id="password_bar">Сложный</div>'; 
              break; 
              case 4: 
                  echo '<div style="width: 100%" id="password_bar">Очень сложный</div>'; 
              break; 
          } 
          echo ']]></result>'; 
      break; 
      default: 
          echo 'Error, invalid action'; 
      break; 
  } 
  ?> 


Теперь у нас выбудет примерно такая форма:

Создание индикатора сложности пароля на PHP


Естественно вы можете её оформить как душе угодно, css вам в помощь.
Спасибо за Ваше внимание!
Рубрика записи: PHP

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Юзер панель
Я тебя не знаю!
Зарегистрируйся, либо

войди под своим логином!

Fuck, я забыл свой пароль!

Восстановить данные =0
Новое на сайте
Известная социальная сеть Instagram приступила к тестированию новой...
Недавно, в приложения для Android и iOS социальной сети Twitter была...
Недавно, в Google "Мой бизнес" разработчики добавили новейший способ, как...
Недавно стало известно о том, что соцсеть Facebook по упоминанию в русских...
Недавно, представитель корпорации Google, Джон Мюллер (John Mueller)...
Голосуем

Ваша любимая CMS?


DataLife Engine
WordPress
Joomla
Drupal
LiveStreet
UCOZ
Самопис
Php+Includ
Статика