Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514

    [PHP - SICUREZZA] S_SERVER[request-uri]

    Salve a tutti,
    ho delle pagine di un applicativo che devono essere visibili solo agli amministratori.
    ho fatto il sistema di login e il resto.
    la parte admin consiste in una parte fissa, ovvero il menu, e una variabile che chiamo per comodità contenuto.

    Di volta in volta nel mio script vengono richiamate la pagine che poi vanno a comporre il contenuto.


    Ho inserito il controllo per l'autenticazione ad inizio pagina in modo tale da non far visualizzare nemmeno il menu a chi non è autorizzato.

    il problema sorge per le pagine del contenuto.
    se vengono richiamate singolramente queste potrebbero essere aperte.
    avevo pensato a due soluzioni
    la prima è reinserire in ogni singola pagina il controllo dell'autenticazione(mi pare poco logica come cosa), la seconda quella di controllare l'url della richiesta.

    In pratica se la pagina in cui il login ha esito positivo sia

    www.miosito.com/loginok.php

    io vorrei verificare nelle pagine interne se la richiesta viene effttuata dall'url sopra. in caso positivo la visualizzo se no passo al logout.
    è valido come sistema di protezione o no?

    spero, vista l'ora, di essere stato chiaro nella spiegazione di ciò che mi serve.
    ciao e grazie in anticipo.

    p.s: ma sono settimane che il sito di html mi apre con lentezza. accade solo a me?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  2. #2
    le pagine che sono riservate "devono" essere controllate all'accesso. Tutte. e ci mancherebbe non fosse cosi' ....

    Ma non devi rifare l'autenticazione dell'utente, questo e' ovvio, ma devi trasferire di pagina in pagina l'autorizzazione ed il livello dei privilegi di ogni singolo utente ammesso. Per fare questo si utilizzano le sessioni.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ma è ciò che ho fatto. provo a spiegarmi meglio
    effettuando correttamente il login dell'aplicativo si viene riportati ad una pagina che è

    loginok.php


    In questa pagina io verifico i dati di sessione e se sono corretti vado a vanti.
    All'interno della pagina loginok, ci sono dei vari include che richiamano le pagine su cui l'amministratore andrà ad operare.

    Il guaio sorgerebbe qualora una di queste pagine venisse richimata direttamente. La pagina verrebbe visualizzata. Ora reinserisco il controllo di sessione oppure basta il controllo della pagina che richiama lo script?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  4. #4
    per proteggere alcune pagine, quando uno si iscrive ad un sito gli si manda un cookie. Io uso questo metodo: quando carichi una certa pagina da proteggere sarebeb meglio prima caricare il cookie e vedere se l'utente ha l'autorizzazione a vederla, altrimenti nisba. In altre parole, supponiamo che il cookie sia nel formato "nome_utente-diritti" dove diritti è 1=admin, 2=guest:

    Codice PHP:
    <?php $user $_COOKIE['user']; ?>
    <html>
    <head><title><title></head>
    <body>
    <?php
       
    if ($user)  {
         
    $arr explode('-'$user);
         if (
    $arr[1] > 1)
           echo 
    "non puoi vedere questa pagina!";
         else { 
    ?>

    <? ?>
    <? 
    ?>
    </body>
    </html>

  5. #5
    Originariamente inviato da ciro78

    All'interno della pagina loginok, ci sono dei vari include che richiamano le pagine su cui l'amministratore andrà ad operare.

    Il guaio sorgerebbe qualora una di queste pagine venisse richimata direttamente. La pagina verrebbe visualizzata. Ora reinserisco il controllo di sessione oppure basta il controllo della pagina che richiama lo script?
    diciamo che non si capiva.

    Se il tuo problema e' di proteggere il file dall'accesso diretto da URL invece che da include/require, potrebbe essere sufficiente un controllo del genere:

    codice:
    <?php
    // Per impedire l'accesso diretto al file
    
    $str = str_replace('\\\', '/', __FILE__);
    
    if($str == $_SERVER['SCRIPT_FILENAME'])
    {
         header("location: ../index.html");
         exit;  
    }
    Se __FILE__ corrisponde a $_SERVER['SCRIPT_FILENAME'] allora sei di fronte ad un accesso diretto tramite URL

    str_replace() serve per rendere compatibile lo script sia con windows che con i sistemi *nix

    Mettilo ad inizio pagina di tutti i file che devono essere esclusivamente inclusi e non chiamati da url. Di solito questo basta per impedire accessi diretti ai file.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ti rigrazio, sembra funzionare come si deve.
    ora giusto per curiosità tecnica. perchè è preferibile adottare la soluzione da te proposta invece che verificare l'url che è effettua la richiesta?

    in pratica perchè è meglio usare

    $_SERVER['SCRIPT_FILENAME']

    che

    $_SERVER['REQUEST_URI']
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    perche' SCRIPT_FILENAME rende il percorso assoluto come __FILE__ e quindi paragonabile senza manipolazione.

    REQUEST_URI rende il path relativo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    grazie per le risposte

    ps : il forum è lentissimo perchè?? VVoVe:
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.