Close
Duke shfaqur rezultatin -9 deri 0 prej 2
  1. #1
    ICE-A Maska e PcCrack3r
    Anëtarësuar
    31-08-2005
    Vendndodhja
    Deçan - Kosovë
    Postime
    163

    PHP - Mbrojtja me fjalëkalim nëpërmjet sesioneve

    Pershendetje,

    Pyetja ime eshte: Si ti vej fjalkalim nje faqeje PHP ??

    Po sqarohem pak.
    Ajo faqe qe dua eshte nje faqe e llojit admin.php dhe eshte nje lloj i panelit te kontrollit te nje web portali, por ate faqe mund ta hap cdo vizitor vetem nese e shtyp ne adress bar www.domain.com/admin.php, une dua qe kesaj faqeje ti vej nje fjalkalim, nese dikush e din ndonje menyre te thjeshte qe tja shtoj ne krye te ketij php skripti nje skript te vogel qe do te kerkoje fjalkalim dhe pastaj te lejoje hyrjen, le te me ndihmoje???
    --==Emi==--

  2. #2
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,565
    Mbrojtja
    Mënyra e shpjeguar më poshtë aftëson mbrojtjen e një ose më shumë faqeve me një llogari të vetme të administratorit. Mbrojtja bëhet nëpërmjet sesioneve të PHP-së dhe administratori qëndron i identifikuar për aq kohë sa sesioni nuk ka skaduar (zakonisht 20 minuta pa hapur faqen) ose administratori nuk mbyll shfletuesin (IE, Firefox).

    E vetmja mënyrë për të sulmuar faqen, është duke gjetur ID-në e sesionit të hapur nga administratori si dhe HTTP_USER_AGENT të shfletuesit të përdorur nga administratori. Për të gjetur ID-në, sulmuesi duhet të përgjojë informacionin e shkëmbyer nga administratori ose duhet të ketë leje të hapë "cookies" në kompjuterin e administratorit. Për të gjetur HTTP_USER_AGENT, sulmuesi duhet të përgjojë rrjetin e administratorit. Me pak fjalë, skripti ofron mbrojtje relativisht të sigurtë.

    Për këtë shembull supozojmë se faqja ka adresën http://localhost/ dhe aty janë hedhur këta skedarë:
    vizitor.php - faqja e vizitorëve të thjeshtë
    identifikohu.php - faqja e identifikimit
    eshteAdmin.php - skripti qe kontrollon nëse ka hyrë administratori apo jo.
    admin.php - faqja e administratorit

    Pra, identifikimi ndjek këtë rrugë:
    vizitor.php -> identifikohu.php -> eshteAdmin.php -> admin.php


    Konfigurimi
    Para se të vini në punë mbrojtjen e mësipërme, duhet kryer konfigurimi i skedarit identifikohu.php. Në krye të këtij skedari duhet shkruar emri dhe fjalëkalimi i administratorit, si dhe adresat e faqeve që hapen pas hyrjes dhe daljes së panelit të administratorit.

    Për këtë shembull kemi këtë konfigurim:
    Kodi PHP:
    <?php
    //**************** KONFIGURIMI *********************

    // Shkruaj emrin dhe fjalekalimin e administratorit
    // Fjalekalimi duhet te shifrohet me funksionin MD5()
    //         Per ta shifruar mund te perdorni funksionin MD5 te PHP-se
    //         ose tek faqja http://pajhome.org.uk/crypt/md5/
    define ('ADMIN_EMRI''admin'); 
    define ('ADMIN_FJALEKALIMI''4b14ade55cf2243661b1f2919884edfe');

    define ('HYRJA''/admin.php');        // faqja e administratorit
    define ('DALJA''/vizitor.php');    // faqja e vizitoreve
    ?>
    Vini re se fjalëkalimi është shifruar si hash me funksionin MD5. Kjo bëhet me qëllim që edhe nqs një person arrin të hapë kodin e faqes identifikohu.php, ai nuk mund të hyjë dot në panelin e administratorit sepse fjalëkalimi është i shifruar.

    Në shembullin më lart, fjalëkalimi i shifruar është 'admin2006'. Për të shifruar një fjalëkalim tjetër, përdorni këtë faqe ose krijoni një skript të thjeshtë në PHP me kodin:
    echo md5("Fjalekalimi_im_sekret");

    HYRJA është vendndodhja e faqes që hapet pas identifikimit të saktë të administratorit ndërsa DALJA është vendodhja e faqes që hapet kur administratori mbyll panelin e administratorit.


    Përdorimi
    Për të mbrojtur një faqe mjafton të shkruani një rresht të vetëm në krye të faqes:
    require('eshteAdmin.php');

    Pra, nëse duam te mbrojmë admin.php, hapDatabazen.php, fshiAnetaret.php, apo faqe të tjera të administratorit, mjafton të shkruajmë rreshtin e mësipërm në krye të çdo faqeje.


    Skedarët

    Më poshtë është kodi i skedarëve, si dhe pamjet e tyre gjatë shfletimit. Skedarët mund të shkarkohen të gjithë sëbashku në paketën e bashkëngjitur.

    vizitor.php

    Kjo është faqja e vizitorëve të thjeshtë.

    Hyni në Panelin e Administratorit

    Kodi PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <
    html>
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <
    title>Faqja e Vizitor&euml;ve</title></head>

    <
    body>
    <
    h2><strong>Kjo &euml;sht&eumlfaqja e vizitor&euml;ve t&eumlthjesht&euml;. </strong></h2>
    <
    p><a href="admin.php">Hyni n&eumlPanelin e Administratorit</a></p>
    </
    body>
    </
    html

    identifikohu.php

    Figura e bashkëngjitur.

    Kodi PHP:
    <?php

    //**************** KONFIGURIMI *********************

    // Shkruaj emrin dhe fjalekalimin e administratorit
    // Fjalekalimi duhet te shifrohet me funksionin MD5()
    //         Per ta shifruar mund te perdorni funksionin MD5 te PHP-se
    //         ose tek faqja http://pajhome.org.uk/crypt/md5/
    define ('ADMIN_EMRI''admin'); 
    define ('ADMIN_FJALEKALIMI''4b14ade55cf2243661b1f2919884edfe');

    define ('HYRJA''/admin.php');        // faqja e administratorit
    define ('DALJA''/vizitor.php');    // faqja e vizitoreve


    //********* MOS NDRYSHO ASGJE ME POSHTE ************

    if (isset($_POST['prano'])) {
        
    kontrolloIdentifikimin();     
    } else if (isset(
    $_GET['largohu'])) {
        
    largoIdentifikimin();
    } else {
        
    kerkoIdentifikimin(); 
    }

    //*************************************************************************
    // Shfaq formularin e identifikimit
    //
    function kerkoIdentifikimin ($gabimi '') {

        if (
    $gabimi != '') {
            
    $gabimi htmlentities($gabimi);
            
    $gabimi $gabimi '';
        }
        
        
    ?>
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Paneli i Administratorit</title>
        <style type="text/css">
        <!--
        .bardhe {
            color: #FFFFFF;
            font-size: x-large;
            font-weight: bold;
        }
        .gabim {color: #FF0000}
        -->
        </style>
        </head>
        <body>
        <form action="identifikohu.php" method="post" name="identifikimi" id="identifikimi">
        <table width="302" border="0" align="center" cellpadding="10" cellspacing="0">
          <tr>
            <td colspan="2" align="center" bgcolor="#990000" class="bardhe">Identifikohu</td>
          </tr>
          <tr>
            <td width="20%" bgcolor="#FEF8ED"><strong>Emri</strong></td>
            <td width="80%" bgcolor="#FEF8ED"><input name="emri" type="text" tabindex="1" maxlength="50">    </td>
          </tr>
          <tr>
            <td bgcolor="#FEF8ED"><strong>Fjal&euml;kalimi</strong></td>
            <td bgcolor="#FEF8ED"><input name="fjalekalimi" type="password" tabindex="2" maxlength="50"></td>
          </tr>
          <tr>
            <td colspan="2" align="center" bgcolor="#FEF8ED"><span class="gabim"><?=$gabimi?>
            </span>
              <input name="prano" type="submit" id="prano" tabindex="3" value="Prano">
            <input name="anulo" type="reset" id="anulo" tabindex="4" value="Anulo"></td>
          </tr>
        </table>
        </form>
        </body>
        </html>
        <?php
    }

    //*************************************************************************
    // Kontrollo nese vizitori shkruan emrin dhe fjalekalim e sakte
    //
    function kontrolloIdentifikimin() {

        
    $emri = isset($_POST['emri']) ? $_POST['emri'] : '';
        
    $fjalekalimi = isset($_POST['fjalekalimi']) ? md5($_POST['fjalekalimi']) : '';
        
        if (
    $emri == ADMIN_EMRI && $fjalekalimi == ADMIN_FJALEKALIMI) {
            
    // emri dhe fjalekalimi jane te sakte
            
            // hap sesionin dhe lejo privilegjet e administratorit
            
    session_start();             
            
    $_SESSION['ADMINISTRATOR'] = true;        
            
    $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
            
            
    // dergoje tek faqja e hyrjes (paneli i administratorit)
            
    Header('Location: ' HYRJA);
            
        } else {    
            
    // emri ose fjalekalimi jane te gabuar
            
    kerkoIdentifikimin("emër ose fjalëkalim i gabuar");
        }
    }


    //*************************************************************************
    // Lesho privilegjet e administratorit dhe kthehu ne nje vizitor te thjeshte
    //
    function largoIdentifikimin() {

        require(
    'eshteAdmin.php');                // kontrollo a eshte admin
        
        
    unset($_SESSION['ADMINISTRATOR']);        // hiq privilegjet e admin
        
    unset($_SESSION['HTTP_USER_AGENT']);
        
        
    Header('Location: ' DALJA);            // dergoje tek faqja e daljes
        
    die();
    }
    ?>
    admin.php

    Nëse personi nuk është identifikuar, hapet faqja e identifikimit.
    Nëse personi është identifikuar:
    Kjo është faqja e administratorit.

    Mbylleni Panelin e Administratorit

    Kodi PHP:
    <?php

    // A eshte administrator?
    require('eshteAdmin.php'); 


    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Paneli i Admnistratorit</title>
    </head>

    <body>
    <h2><strong>Kjo &euml;sht&euml; faqja e administratorit. </strong></h2>
    <p><a href="/identifikohu.php?largohu=po">Mbylleni Panelin e Administratorit</a> </p>
    </body>
    </html>

    eshteAdmin.php

    Kodi PHP:
    <?php

    //*************************************************
    // Ky skript kontrollon nese nje vizitor
    // eshte identifikuar si administrator apo jo. 
    // Per te perdorur skriptin, shkruani:
    // require('eshteAdmin.php'); 
    // 

    // mos lejo skriptin te hapet vetem
    if (eregi('eshteAdmin.php'$_SERVER['PHP_SELF'])) {
        
    Header('Location: /index.php');
        die();
    }

    session_start(); 

    // ndalo sesionet e paidentifikuar
    if (!isset($_SESSION['HTTP_USER_AGENT']) || !isset($_SESSION['ADMINISTRATOR'])) {
        
    Header('Location: /identifikohu.php');
        die();
    }

    // ndalo perdorimin e sesioneve te hapur nga dikush tjeter (session hijacking)
    if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])) {
        
    Header('Location: /identifikohu.php');
        die();
    }

    // Vizitori ka leje si Administrator
    ?>
    Fotografitë e Bashkëngjitura Fotografitë e Bashkëngjitura  
    Skedarët e Bashkëngjitur Skedarët e Bashkëngjitur
    Edi

Tema të Ngjashme

  1. Fragmente nga Shën Grigor Teologu
    Nga Kryeengjelli në forumin Komuniteti orthodhoks
    Përgjigje: 2
    Postimi i Fundit: 12-03-2007, 07:40
  2. Letra e Kishës së Romës drejtuar Kishës së Korinthit
    Nga Kryeengjelli në forumin Komuniteti orthodhoks
    Përgjigje: 0
    Postimi i Fundit: 10-03-2007, 16:35
  3. Gjergj Kastrioti sipas pikëpamjeve antishqiptare
    Nga Davius në forumin Historia shqiptare
    Përgjigje: 77
    Postimi i Fundit: 28-04-2006, 12:45

Regullat e Postimit

  • Ju nuk mund të hapni tema të reja.
  • Ju nuk mund të postoni në tema.
  • Ju nuk mund të bashkëngjitni skedarë.
  • Ju nuk mund të ndryshoni postimet tuaja.
  •