Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    proteggere jpg con .htaccess

    ho un cartella contenente dei jpg, vorrei scrivere un .htaccess che mi permettesse di bloccare l'accesso diretto dal browser ad ogni singolo file, cioè se scrivo sul browser

    www.sito.it/foto/nomefile.jpg

    non mi venga visualizzato nulla, se invece quel file lo richiamo da dentro il sito, venga correttamente visualizzato, mi date una mano?

  2. #2
    ho provato mettendo dentro la directory che voglio proteggere del sito questo .htaccess

    <limit GET POST>
    order deny, allow
    deny from all
    allow from nomesito.it
    <limit>

    mi vengono bloccati i file quando li richiamo dal browser, ma purtroppo mi vengono bloccati anche quando li richiamo da nomesito.it, come posso fare?
    praticamente nella pagina web non vedo i jpg

  3. #3
    Ciao,
    ho già affrontato il problema, ed ho anche descritto nel dettaglio le operazioni da compiere a questo indirizzo:
    http://poyblog.wordpress.com/2009/10...sempi-pratico/
    Nel caso pratico descritto al link sopra indicato viene protetta da visualizzazione una cartella contente file testuali.

    La medesima cosa la si può compiere con le immagini.
    Ti riassumo i passi necessari:
    - primo, proteggere da lettura la cartella contente le immagini. Per fare questo è necessario creare nel file di configurazione del virtual host le seguenti voci:
    <Directory /var/www/immagini>
    Order Allow,Deny
    Deny from all
    </Directory>
    dove per /var/www/immagini si intende la cartella dove sono ospitate tutte le immagini.
    A questo punto se riavvii apache noterai che la cartella immagini non è più navigabile (http://sito/immagini), e così pure la pagina del sito (index.html) che utilizza il tag img per visualizzare l'immagine ([img]./immagini/immagine.jpg[/img]) non sarà in grado di visualizzare l'immagine.

    - secondo. La soluzione in questo caso è creare una pagina php n grado di visualizzare l'immagine ed inserire poi questa come valore src dell'immagine; di seguito i dettagli.
    Crei una pagina php nominata img.php così compilata:
    <?php
    if (isset($_GET['imgpath'])){
    $imagepath=$_GET['imgpath'];
    $image=imagecreatefromjpeg($imagepath);
    header('Content-Type: image/jpeg');
    imagejpeg($image);
    }
    ?>
    Tale pagina non fa altro che prendere in input ($_GET) il percorso dell'immagine e visualizzarlo. Perchè tale file funzioni devi aver installato il motore php e abilitato il modulo php-gd (su ubuntu apt-get install php5-gd)
    Ultima raccomandazione la funzione imagejpeg è per immagini jpeg, esistono anche le funzione per png, gif etc..

    - terzo. Modificare la pagina index, o le pagine che richiamano le immagini sostituendo i tag img vecchi:
    [img]./immagini/immagine.jpg[/img]
    con
    [img]img.php?imgpath=immagini/immagine.jpg[/img]

    Il gioco è fatto, con navigazione html apache blocca l'accesso alle immagini, ma php è comunque in grado di mostrarle.

  4. #4
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573
    Inspirandosi alle regole per l'hotlink, proteggo la cartella img dall'accesso diretto:
    codice:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} img/
    RewriteCond %{HTTP_REFERER} ^$
    RewriteRule . no_accesso_diretto\.html [L]
    mai usata in produzione, da testare quindi (testata solo in locale).
    se si è già visualizzata l'immagine, al primo tentativo di accedere direttamente al file, il browser mostra la copia cache, facendo refresh si ottiene il risultato desiderato

  5. #5
    Originariamente inviato da cpoinelli
    Ciao,
    ho già affrontato il problema, ed ho anche descritto nel dettaglio le operazioni da compiere a questo indirizzo:
    http://poyblog.wordpress.com/2009/10...sempi-pratico/
    Nel caso pratico descritto al link sopra indicato viene protetta da visualizzazione una cartella contente file testuali.

    La medesima cosa la si può compiere con le immagini.
    Ti riassumo i passi necessari:
    - primo, proteggere da lettura la cartella contente le immagini. Per fare questo è necessario creare nel file di configurazione del virtual host le seguenti voci:
    <Directory /var/www/immagini>
    Order Allow,Deny
    Deny from all
    </Directory>
    dove per /var/www/immagini si intende la cartella dove sono ospitate tutte le immagini.
    A questo punto se riavvii apache noterai che la cartella immagini non è più navigabile (http://sito/immagini), e così pure la pagina del sito (index.html) che utilizza il tag img per visualizzare l'immagine ([img]./immagini/immagine.jpg[/img]) non sarà in grado di visualizzare l'immagine.

    - secondo. La soluzione in questo caso è creare una pagina php n grado di visualizzare l'immagine ed inserire poi questa come valore src dell'immagine; di seguito i dettagli.
    Crei una pagina php nominata img.php così compilata:
    <?php
    if (isset($_GET['imgpath'])){
    $imagepath=$_GET['imgpath'];
    $image=imagecreatefromjpeg($imagepath);
    header('Content-Type: image/jpeg');
    imagejpeg($image);
    }
    ?>
    Tale pagina non fa altro che prendere in input ($_GET) il percorso dell'immagine e visualizzarlo. Perchè tale file funzioni devi aver installato il motore php e abilitato il modulo php-gd (su ubuntu apt-get install php5-gd)
    Ultima raccomandazione la funzione imagejpeg è per immagini jpeg, esistono anche le funzione per png, gif etc..

    - terzo. Modificare la pagina index, o le pagine che richiamano le immagini sostituendo i tag img vecchi:
    [img]./immagini/immagine.jpg[/img]
    con
    [img]img.php?imgpath=immagini/immagine.jpg[/img]

    Il gioco è fatto, con navigazione html apache blocca l'accesso alle immagini, ma php è comunque in grado di mostrarle.
    grazie, sei un grande!!! era proprio quello che cercavo, oggi mi metto all'opera ed installo tutto!
    una sola domanda, la pagina che visualizzerà le anteprime delle foto, ne prende anche 50 alla volta, scomodare le librerie GD per 50 file in un unica volta, non sovraccarica troppo apache?
    rischio timeout o cose del genere?

  6. #6
    Come sempre la via più sicura non è mai la più veloce.
    In questo caso si deve pagare in termini di prestazioni e carico della macchina, difatti come hai già intuito ogni immagine viene generata tramite script e quindi richiede tempo e capacità computazionali.
    Non posso quantificarti il carico sul tuo server, il consiglio è quello di fare delle prove e poi decidere in caso di esecuzione troppo lenta, se è il caso di mostrare meno immagini per volta o rinunciare a questa metodologia per nsacondere le immagini.

  7. #7
    ok perfetto! grazie ancora.

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.