Http аутентификация

Тема в разделе "PHP программирование", создана пользователем GOBLIN, 18 июл 2006.

Статус темы:
Закрыта.
  1. GOBLIN

    GOBLIN Гость

    Народ хелп вот есть пример странички которая запрашивает логин и пароль но где указывать логин и пароль я незнаю подскажите.
    Вот код


    <?
    $path_log = "/home/ernst/.htmyway";

    // Konfigurationsfile einlesen:
    $file = file($path_log);

    $login = FALSE; // Gets TRUE, when login is valid
    $ip = 'world'; // This is the currend IP while reading the configuration
    $access = 'world'; // IP from configuration fitting into $_SERVER['REMOTE_ADDR']

    foreach ($file as $zeile)
    {
    $zeile = trim($zeile);

    switch(true)
    {
    case ( strlen($zeile) == 0 ): // break for empty lines
    break;

    case ( substr($zeile, 0, 1) == '#' ): // break for Komments
    break;

    case ( substr($zeile, 0, 2) == 'IP' ): // change IP range
    $ip = substr($zeile, 3);
    if ($ip == '')
    $ip = 'world';

    if ( ereg("^$ip", $_SERVER['REMOTE_ADDR']) ) // fitting IP
    {
    $access = $ip;
    }
    break;

    case ( ereg("(.+)<_<.*)", $zeile, $reg) ): // scan passwords
    $logray[$ip][$reg[1]] = $reg[2];
    break;

    case ( $zeile == 'ALL' ): // if no login is needet
    $logray[$ip]['all'] = 1;
    }
    }

    // <for testing>
    if ( isset($_GET['logout']) )
    {
    unset($_SERVER['PHP_AUTH_USER']);
    unset($_SERVER['PHP_AUTH_PW']);
    }
    // </for testing>

    // authorisation test
    if ( isset($_SERVER['PHP_AUTH_USER']) AND isset($_SERVER['PHP_AUTH_PW']) )
    if( isset($logray[$access][$_SERVER['PHP_AUTH_USER']]) )
    if( $logray[$access][$_SERVER['PHP_AUTH_USER']] == crypt($_SERVER['PHP_AUTH_PW'], (substr($logray[$access][$_SERVER['PHP_AUTH_USER']], 0, 2))) )
    $login = TRUE;

    if ( isset($logray[$access]['all']) )
    $login = TRUE;

    // send login-form if needet
    if ( !$login )
    {
    Header("WWW-Authenticate: Basic realm=\"Test Authentication System\"");
    Header("HTTP/1.0 401 Unauthorized");
    echo "You must enter a valid login ID and password to access this resource\n";
    exit;
    }

    // Your running programm...
    if ( $login )
    {
    echo "Hello " . $_SERVER['PHP_AUTH_USER'];

    ?>
    <BR>
    <form>
    <input type='submit' name='logout' value='logout'>
    </form>
    <?

    }
    ?>


    Где тут указывать логин и пароль ??
    Как я понял надо создать библиотеку и вписать туда это
    Код:

    # Passwort for special IP-Range
    IP 192.168.0.
    axel:pGWAiIeUxcHOg
    sven:ADD1IDbsVHSEo

    # Following IP works without password (Keyword 'ALL')
    IP 192.168.0.4
    ALL

    # Passwords for the rest of the world
    IP
    ernst:INo9dSzfU5sRU
    sven:ADD1IDbsVHSEo


    Или нет HELP!!!
     
  2. DikMax

    DikMax Гость

    Если я правильно понял, то это файл в формате, что ты описал. И он должен лежать по пути указанном в $path_log

    и там идет строчка 'IP ...'
    и после нее идут строки 'login:password'
    Причем пароль вроде как зашифрован.
     
  3. GOBLIN

    GOBLIN Гость

    Значит мне надо создать файл в деректории где лежит мой пхп скрипт а файл в каком формате должен быть в .php
    Зашифрованный <_<
     
  4. DikMax

    DikMax Гость

    Вроде пароль шифруется вот так: $pass = crypt($original_pass)
     
  5. GOBLIN

    GOBLIN Гость

    А как сделать чтобы например я сделал
    Логин GOBLIN
    Пароль 123

    Я просто не очень в этом парю

    Можеш помоч его настроить.
     
  6. DikMax

    DikMax Гость

    Создаешь небольшой файлик

    Код (Text):
    <?
    echo crypt('123');
    ?>
    Смотришь что выводит

    и потом строишь файл с паролями

    Код (Text):
    IP
    GOBLIN:$$$
    Где $$$ - это то, что выдал первый файл
     
  7. GOBLIN

    GOBLIN Гость

    А файл с паролями в каком форматье должен быть .php ??
     
  8. DikMax

    DikMax Гость

    В текстовом
     
  9. GOBLIN

    GOBLIN Гость

    Значит надо создать файл например

    password.txt
    И вписать туда

    IP
    GOBLIN:$$$

    Потом создать файл

    enter.php

    и вписать туда
    <?
    echo crypt('123');
    ?>

    А здесь написать
    $path_log = "password.txt";

    Вот тока я непойму где связь между файлами enter.php и password.txt

    Создал небольшой файлик как ты сказал и вот что получилось
    http://goblin.tushino.com/echo.php

    Я понял этот файл работает как генератор паролей всё ок но как мне правильно построить файл с паролями чтобы ему передавалось значение файла http://goblin.tushino.com/echo.php
     
  10. s10

    s10 Гость

    <!--QuoteBegin-GOBLIN+19:07:2006, 17:51 -->
    <span class="vbquote">(GOBLIN @ 19:07:2006, 17:51 )</span><!--QuoteEBegin-->Вот тока я непойму где связь между файлами enter.php и password.txt
    [snapback]40411" rel="nofollow" target="_blank[/snapback]​
    [/quote]


    у тя щя есть твой echo.php который выводит результат шифрования ф строку. В нем к примеру пишешь так

    Код (Text):
    <?php
    echo crypt('123');
    ?>
    в результате получишь
    $1$HC2.Ez1.$QzukUevXX9NJQzOO0c4yv0 - так вот это и есть хэш твоего пароля (123), который (хэш) нужно записать в файл password.txt вместо $$$

    а в самом скрипте твоем поправить путь до файла
    $path_log = "путь/до/password.txt"

    это насколько я понял.
     
  11. GOBLIN

    GOBLIN Гость

    И пароль получается будет тот что генерирует файл echo.php а логин GOBLIN

    Например

    Login: GOBLIN
    Password: Пароль сгенерированный файлом echo.php

    вот что получилось
    http://goblin.tushino.com/loock=close.php

    тока не работает всёравно.
     
  12. s10

    s10 Гость

    <!--QuoteBegin-GOBLIN+19:07:2006, 21:33 -->
    <span class="vbquote">(GOBLIN @ 19:07:2006, 21:33 )</span><!--QuoteEBegin-->И пароль получается будет тот что генерирует файл echo.php а логин GOBLIN
    [snapback]40420" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    эээ. нет. пароль надо вводить тот который ты передавал аргументом в crypt().
    т.е. если (как у меня) файл password.txt такой :
    то при загрузке твоего скрипта, там где он просит лог и пароль надо в поле пароля писать 123.
    если скрипт правильно работает то все будет ок.
     
  13. GOBLIN

    GOBLIN Гость

    Вот вообщем получилось у меня 3 файла
    1) index.php \\ Сам скрипт
    2)echo.php \\ Генератор паролей
    3)password.txt \\ Файл с паролем

    Код файла index.php
    Код (Text):
    <?
    $path_log = "password.txt";

    // Konfigurationsfile einlesen:
    $file = file($path_log);

    $login = FALSE;                 // Gets TRUE, when login is valid
    $ip = 'world';                  // This is the currend IP while reading the configuration
    $access = 'world';              // IP from configuration fitting into $_SERVER['REMOTE_ADDR']

    foreach ($file as $zeile)
    {
    $zeile = trim($zeile);

    switch(true)
    {
    case ( strlen($zeile) == 0 ):               // break for empty lines
    break;

    case ( substr($zeile, 0, 1) == '#' ):           // break for Komments
    break;

    case ( substr($zeile, 0, 2) == 'IP' ):      // change IP range
    $ip = substr($zeile, 3);
    if ($ip == '')
    $ip = 'world';

    if ( ereg("^$ip", $_SERVER['REMOTE_ADDR']) )    // fitting IP
    {
    $access = $ip;
    }
    break;

    case ( ereg("(.+):(.*)", $zeile, $reg) ):       // scan passwords
    $logray[$ip][$reg[1]] = $reg[2];
    break;

    case ( $zeile == 'ALL' ):               // if no login is needet
    $logray[$ip]['all'] = 1;
    }
    }

    // <for testing>
    if ( isset($_GET['logout']) )
    {
    unset($_SERVER['PHP_AUTH_USER']);
    unset($_SERVER['PHP_AUTH_PW']);
    }
    // </for testing>

    // authorisation test
    if ( isset($_SERVER['PHP_AUTH_USER']) AND isset($_SERVER['PHP_AUTH_PW']) )
    if( isset($logray[$access][$_SERVER['PHP_AUTH_USER']]) )
    if( $logray[$access][$_SERVER['PHP_AUTH_USER']] == crypt($_SERVER['PHP_AUTH_PW'], (substr($logray[$access][$_SERVER['PHP_AUTH_USER']], 0, 2))) )
    $login = TRUE;

    if ( isset($logray[$access]['all']) )
    $login = TRUE;

    // send login-form if needet
    if ( !$login )
    {
    Header("WWW-Authenticate: Basic realm=\"Доступ к секретному разделу\"");
    Header("HTTP/1.0 401 Unauthorized");
    echo "Вы превысели допустимое количество попыток.\n";
    exit;
    }

    // Your running programm...
    if ( $login )
    {
    echo "Hello " . $_SERVER['PHP_AUTH_USER'];

    ?>
    <BR>
    <form>
    <input type='submit' name='logout' value='logout'>
    </form>
    <?

    }
    ?>

    2)Код файла echo.php
    Код (Text):
    <?
    echo crypt('123');
    ?>
    3)Код файла password.txt
    IP
    GOBLIN: $1$oh.ip8wc$N/AGQphhThq3wVMT3ZUlH0

    Посмотри всё ли тут правильно Плиз :)

    Всё залил на сервер по адресу
    http://goblin.tushino.com/auntification/index.php

    Но всё равно не работает значит гдето ошибка помоги найти

    1)http://goblin.tushino.com/auntification/index.php
    2)http://goblin.tushino.com/auntification/echo.php
    3)http://goblin.tushino.com/auntification/password.txt
    \\ Все мои файлы коды вверху
     
  14. s10

    s10 Гость

    .. беру свои слова назад. я не знаю как это работает.

    Код (Text):
    if( $logray[$access][$_SERVER['PHP_AUTH_USER']] == crypt($_SERVER['PHP_AUTH_PW'], (substr($logray[$access][$_SERVER['PHP_AUTH_USER']], 0, 2))) )
    $login = TRUE;
    скажите кто нибудь, а почему в crypt() вторым аргументом стоит substr(...,0,2)
    а не просто $logray[$access][$_SERVER['PHP_AUTH_USER']] ?
     
  15. DikMax

    DikMax Гость

    Есть предположение, что и пароль нужно генерить в виде crypt('password','login').
    Просто я немного не понимаю принцип действия всего этого дела.
     
  16. GOBLIN

    GOBLIN Гость

    Ну тогда подскажите тоже самое токо по прше как сделать
     
  17. s10

    s10 Гость

    смари [snapback]40478" rel="nofollow" target="_blank[/snapback]</div>[/quote]
    так и есть. второй параметр обязателен.
     
  18. s10

    s10 Гость

    2 GOBLIN
    в файле password.txt надо указывать с какого ip ты заходищь.
    имя пользователя и пароль.
    вот к примеру у тебя какой ip?

    ***
    2 GOBLIN
    все тут в архиве, читай README.
     
  19. GOBLIN

    GOBLIN Гость

    s10 Спасибо огромное всё получилось тока вот косяк ты напписал чтобы не было "?logout=logout" ну вот оно было и сохранилось гдето на компе где оно лежит и как мне его удалить.

    Вот ещё воопрос там когда пароль ввёл то при следуещем заходе он больше не предложит вводить пароль а просто скажет хелло .....
    Как сделать чтобы он всегда запрашивал пароль.
     
  20. GOBLIN

    GOBLIN Гость

Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей