Безопасность движков, запаролить веб страницу

Discussion in 'PHP' started by Romaxa55, 16 Dec 2005.

  1. Romaxa55

    Romaxa55 Banned

    Joined:
    19 Oct 2005
    Messages:
    144
    Likes Received:
    30
    Reputations:
    4
    Парни, очень нужна помощ, в php я ноль, тема такая, значит для движка php-fusion, хочу установить пароль, (если вдруг угонят хеш, то в админку злоумышленик не попадет) значит редактирую index.php в директории админцентра, в начало индекеса вставлю вот этот код

    PHP:
    $LOGIN "demo";
    $PASSWORD "demo";
    function 
    error ($error_message) {
        echo 
    $error_message."<BR>";
        exit;
    }
    if ( (!isset(
    $PHP_AUTH_USER)) || ! (($PHP_AUTH_USER == $LOGIN) && ( $PHP_AUTH_PW == "$PASSWORD)) ) {
        
    header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
        
    header("HTTP/1.0 401 Unauthorized");
        
    error("error");
    }
    ?> 
    ввожу, ничего не происходит, после трех попыток выдает ошибку, подскажите что нужно дописать
    Вот сам код индекса
    PHP:
    <?php

    require_once "../maincore.php";

    require_once 
    BASEDIR."subheader.php";

    require_once 
    ADMIN."navigation.php";



    if (!
    iADMIN || $userdata['user_rights'] == ""fallback("../index.php");

    if (!isset(
    $pagenum) || !isNum($pagenum)) $pagenum 1;



    $admin_images true;

    if (
    $page1) { $default 1; }

    elseif (
    $page2) { $default 2; }

    elseif (
    $page3) { $default 3; }

    elseif (
    $page4) { $default 4; }

    else { 
    fallback("../index.php"); }
    page

    $pageon 
    true;

    if (
    $pagenum == && !$page1$pageon false;

    if (
    $pagenum == && !$page2$pageon false;

    if (
    $pagenum == && !$page3$pageon false;

    if (
    $pagenum == && !$page4$pageon false;

    if (
    $pageon == falseredirect("index.php?pagenum=$default");

    opentable($locale['200']." - v".$settings['version']);

    echo 
    "<table align='center' cellpadding='0' cellspacing='1' width='100%' class='tbl-border'>\n<tr>\n";

    if (
    $page1) {

        echo 
    "<td align='center' width='25%' class='".($pagenum == "tbl1" "tbl2")."'><span class='small'>\n";

        echo (
    $pagenum == "<b>".$locale['ac01']."</b>" "<a href='index.php?pagenum=1'>".$locale['ac01']."</a>")."</span></td>\n";

    }

    if (
    $page2) {

        echo 
    "<td align='center' width='25%' class='".($pagenum == "tbl1" "tbl2")."'><span class='small'>\n";

        echo (
    $pagenum == "<b>".$locale['ac02']."</b>" "<a href='index.php?pagenum=2'>".$locale['ac02']."</a>")."</span></td>\n";

    }

    if (
    $page3) {

        echo 
    "<td align='center' width='25%' class='".($pagenum == "tbl1" "tbl2")."'><span class='small'>\n";

        echo (
    $pagenum == "<b>".$locale['ac03']."</b>" "<a href='index.php?pagenum=3'>".$locale['ac03']."</a>")."</span></td>\n";

    }

    if (
    $page4) {

        echo 
    "<td align='center' width='25%' class='".($pagenum == "tbl1" "tbl2")."'><span class='small'>\n";

        echo (
    $pagenum == "<b>".$locale['ac04']."</b>" "<a href='index.php?pagenum=4'>".$locale['ac04']."</a>")."</span></td>\n";

    }

    echo 
    "</tr>

    <tr>

    <td colspan='4' class='tbl1'>\n"
    ;

    $result dbquery("SELECT * FROM ".$db_prefix."admin WHERE admin_page='$pagenum' ORDER BY admin_title");

    $rows dbrows($result);

    if (
    $rows != 0) {

        
    $counter 0$columns 4;

        
    $align $admin_images "center" "left";

        echo 
    "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n";

        while (
    $data dbarray($result)) {

            if (
    checkrights($data['admin_rights']) && $data['admin_link'] != "reserved") {

                if (
    $counter != && ($counter $columns == 0)) echo "</tr>\n<tr>\n";

                echo 
    "<td align='$align' width='25%' class='tbl'>";

                if (
    $admin_images) {

                    echo 
    "<span class='small'><a href='".$data['admin_link']."'><img src='".ADMIN."images/".$data['admin_image']."' alt='".$data['admin_title']."' style='border:0px;'><br>\n".$data['admin_title']."</a></span>";

                } else {

                    echo 
    "<span class='small'><img src='".THEME."images/bullet.gif' alt=''> <a href='".$data['admin_link']."'>".$data['admin_title']."</a></span>";

                }

                echo 
    "</td>\n";

                
    $counter++;

            }

        }

        echo 
    "</tr>\n</table>\n";

    } else {

        echo 
    "<center><br>\n".$locale['401']."<br><br>\n</center>\n";

    }

    echo 
    "</td>\n</tr>\n</table>\n";

    closetable();

    tablebreak();

    opentable($locale['250']);

    echo 
    "<table align='center' cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n<td width='33%' class='small'>

    "
    .$locale['251']." ".dbcount("(user_id)""users""user_status<='1'")."<br>

    "
    .$locale['252']." ".dbcount("(user_id)""users""user_status='2'")."<br>

    "
    .$locale['253']." ".dbcount("(user_id)""users""user_status='1'")."<br>

    </td>

    <td valign='top' width='33%' class='small'>

    "
    .$locale['254']." ".dbcount("(submit_id)""submissions""submit_type='n'")."<br>

    "
    .$locale['255']." ".dbcount("(submit_id)""submissions""submit_type='a'")."<br>

    "
    .$locale['256']." ".dbcount("(submit_id)""submissions""submit_type='l'")."

    <td valign='top' width='33%' class='small'>

    "
    .$locale['257']." ".dbcount("(comment_id)""comments")."<br>

    "
    .$locale['258']." ".dbcount("(shout_id)""shoutbox")."<br>

    "
    .$locale['259']." ".dbcount("(post_id)""posts")."

    </td>\n</tr>\n</table>\n"
    ;

    closetable();



    echo 
    "</td>\n";

    require_once 
    BASEDIR."footer.php";

    ?>
     
  2. Nova

    Nova Green member

    Joined:
    15 Jul 2005
    Messages:
    1,233
    Likes Received:
    420
    Reputations:
    280
    Сделай так

    аунтификацию файлом .htaccess такого сожержания
    PHP:
    <files имя файла.php>
    authname admin_area
    authtype basic
    authuserfile 
    /абсолютный_путь/.htpasswd
    require valid-user
    </files>
    файл .htpasswd думаю найдёш как создать в нём прописываеться логин и пароль к этой аунтификаций

    вот пример логин и пароль admin/admin
    PHP:
    admin:$apr1$zI5.....$gTUgpZdlFuRl8aKjGCSlg/
     
    _________________________
  3. Rebz

    Rebz Banned

    Joined:
    8 Nov 2004
    Messages:
    4,052
    Likes Received:
    1,534
    Reputations:
    1,128
    может я чего-нить конечно и не понимаю))
    но где у тебя в примере сама форма куда должен вводиться логин и пароль?
    или за это отвечают переменные $php_auth_user и $php_auth_password?

    а что за ошибку выводит?
     
  4. virgoz

    virgoz Elder - Старейшина

    Joined:
    16 Sep 2004
    Messages:
    151
    Likes Received:
    28
    Reputations:
    15
    Вот это в начало index.php вставь:
    PHP:
    $login_check="demo";
    $pwd_check="demo";

    if(!isset(
    $login)&&!isset($pwd))
    {
       echo 
    "<form method=post>";
       echo 
    "<html><head><title></title></head><body>\n";
       echo 
    "Ëîãèí: <br>\n";
       echo 
    "<input type=text name=login size=48 value=''><br>";
       echo 
    "Ïàðîëü: <br>\n";
       echo 
    "<input type=text name=pwd size=48 value=''><br>";
       echo 
    "<input name=\"Submit\" type=submit value='go' >";
       echo 
    "</form>";
       echo 
    "</body></html>\n";
       exit;
    }
    else
    {
       if(
    $login_check!==$login || $pwd_check!==$pwd){
       echo 
    "error";exit;}
    }
    Только не забудь $login_check и $pwd_check поменять.
     
  5. qBiN

    qBiN Вот такой вот я :(

    Joined:
    20 Jan 2005
    Messages:
    834
    Likes Received:
    73
    Reputations:
    33
    Так оно и есть,парниша хочет аунтификацировать пользователя через Auth Basic(читаем спецификацию http)
    Если в 2 строчках будет что-то типа:
    PHP:
    if(!isset($_SERVER['PHP_AUTH_USER'])){header('WWW-Authenticate: Basic realm="Authentication"');header('HTTP/1.0 401 Unauthorized');exit;}
    else{if(
    $_SERVER['PHP_AUTH_USER']!=="user" || $_SERVER['PHP_AUTH_PW']!=="cool"){die('Error');} echo 'ok';}
     
  6. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
  7. virgoz

    virgoz Elder - Старейшина

    Joined:
    16 Sep 2004
    Messages:
    151
    Likes Received:
    28
    Reputations:
    15
    2ZaCo понял ;))
     
  8. Romaxa55

    Romaxa55 Banned

    Joined:
    19 Oct 2005
    Messages:
    144
    Likes Received:
    30
    Reputations:
    4
    Парни спасиб большое, ща папробуююю...
     
  9. Romaxa55

    Romaxa55 Banned

    Joined:
    19 Oct 2005
    Messages:
    144
    Likes Received:
    30
    Reputations:
    4
    Вот этот код работает, но происходит следубщая херня, у мя стоит php-fusion, и при обращении к индексу админки, идет все номано логи пасс ввожу, иде дальше, и начинается открытие страницы и пишет не верный логин и пасс в самрм php-fusion, и происходит переход на главную страницу. что можно предпринять?
     
  10. qBiN

    qBiN Вот такой вот я :(

    Joined:
    20 Jan 2005
    Messages:
    834
    Likes Received:
    73
    Reputations:
    33
    Использовать мой код =)
    Вместо echo "ok"; вставь код админки.
     
  11. virgoz

    virgoz Elder - Старейшина

    Joined:
    16 Sep 2004
    Messages:
    151
    Likes Received:
    28
    Reputations:
    15
    Romaxa55, наверное совпадают переменные :)
    Поробуй так:
    PHP:
    $login_check="demo"
    $pwd_check="demo"

    if(!isset(
    $login_n)&&!isset($pwd_n)) 

       echo 
    "<form method=post>"
       echo 
    "<html><head><title></title></head><body>\n"
       echo 
    "Ëîãèí: <br>\n"
       echo 
    "<input type=text name=login_n size=48 value=''><br>"
       echo 
    "Ïàðîëü: <br>\n"
       echo 
    "<input type=text name=pwd_n size=48 value=''><br>"
       echo 
    "<input name=\"Submit\" type=submit value='go' >"
       echo 
    "</form>"
       echo 
    "</body></html>\n"
       exit; 

    else 

       if(
    $login_check!==$login_n || $pwd_check!==$pwd_n){ 
       echo 
    "error";exit;} 
    }
     
    1 person likes this.
  12. Romaxa55

    Romaxa55 Banned

    Joined:
    19 Oct 2005
    Messages:
    144
    Likes Received:
    30
    Reputations:
    4
    Спасиб большое, очень помогло, все работает, тебе + репутацию ;)
     
  13. BymeR

    BymeR Elder - Старейшина

    Joined:
    25 Jul 2005
    Messages:
    34
    Likes Received:
    9
    Reputations:
    1
    Блин а элементарное:
    PHP:
    //где нить в начале скипта вставить
    if($admpass=="demo"&&$admlog=="demo")
    {
    //тут текст скрипта...
    }
    else {echo 
    "bad login";}
    Просто разница в том,что менять несколько дольше булешь,но ты ведь не продавать этот скрипт будешь...
    Хотя ещё много защиты можно поставить =) ещё ява скриптом пароля защитить мона =)
    А посложнее листай защита проектов php...