Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 31

Discussione: php antileecher

  1. #1
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito php antileecher

    questo è il codice... provatelo e ditime se può essere utile OLD

    Codice PHP:
    <?PHP
    //php antileecher
    //created by evolutioncrazy
    //marco@evcz.tk
    //concesso sotto licenza gnu/gpl versione 2 o successiva
    //versione 0.1

    //file supportati: gif, jpeg, png

    //per richiamare un'immagine risiedente nella cartella /images/
    //al posto dell'url dell'immagine mettere:
    //http://evcz.altervista.org/img.php?img=nomefile.gif
    //se l'immagine si trova in una sottocartella usare questa url
    //http://evcz.altervista.org/img.php?img=sottocartella/nomefile.gif

    //se il tipo di file richiesto non corrisponde ai previsti oppure il dominio dove è usato non corrisponde al previsto viene
    //mandata in uscita un gif trasparente 1px*1px

    //SETTAGGI
    //dominio senza www, senza http e senza fronzoli vari
    $dominio = "evcz.altervista.org";

    //cartella protetta con la funziona del pannello di controllo
    $fullpath = "/membri/evcz/images/";
    //FINE SETTAGGI

    //INIZIO CODICE (non occorre modificare nulla da qui in poi)
    $lunghezza = strlen($dominio);
    $referer = strtolower($_SERVER['HTTP_REFERER']);
    $referer = str_replace("http://", "", $referer);
    $referer = str_replace("www.", "", $referer);
    $referer = substr($referer, 0, $lunghezza);
    $img = str_replace("../", "", $img);
    if(isset(
    $referer) && $referer == $dominio){
    //controllo effettiva estensione
    $tipo = getimagesize($fullpath."".$img);
    switch(
    $tipo['mime']){
    case
    "image/gif":
    $estensione = ".gif";
    break;
    case
    "image/jpeg":
    $estensione = ".jpg";
    break;
    case
    "image/png":
    $estensione = ".png";
    break;
    default:
    $estensione = "VIETATA";
    break;
    }
    if(
    $estensione != "VIETATA"){
    header ("Content-Type: ".$tipo['mime']);
    $size = filesize($fullpath."".$img);
    header ("Content-Length: ".$size);
    readfile($fullpath."".$img);
    exit();
    }
    else{
    header ("Content-Type: image/gif");
    header ("Content-Length: 43");
    echo
    chr(0x47).chr(0x49).chr(0x46).chr(0x38).chr(0x39).chr(0x61).chr(0x01).chr(0x00).
    chr(0x01).chr(0x00).chr(0x80).chr(0x00).chr(0x00).chr(0x04).chr(0x02).chr(0x04).
    chr(0x00).chr(0x00).chr(0x00).chr(0x21).chr(0xF9).chr(0x04).chr(0x01).chr(0x00).
    chr(0x00).chr(0x00).chr(0x00).chr(0x2C).chr(0x00).chr(0x00).chr(0x00).chr(0x00).
    chr(0x01).chr(0x00).chr(0x01).chr(0x00).chr(0x00).chr(0x02).chr(0x02).chr(0x44).
    chr(0x01).chr(0x00).chr(0x3B);
    }
    }
    else{
    header ("Content-Type: image/gif");
    header ("Content-Length: 43");
    echo
    chr(0x47).chr(0x49).chr(0x46).chr(0x38).chr(0x39).chr(0x61).chr(0x01).chr(0x00).
    chr(0x01).chr(0x00).chr(0x80).chr(0x00).chr(0x00).chr(0x04).chr(0x02).chr(0x04).
    chr(0x00).chr(0x00).chr(0x00).chr(0x21).chr(0xF9).chr(0x04).chr(0x01).chr(0x00).
    chr(0x00).chr(0x00).chr(0x00).chr(0x2C).chr(0x00).chr(0x00).chr(0x00).chr(0x00).
    chr(0x01).chr(0x00).chr(0x01).chr(0x00).chr(0x00).chr(0x02).chr(0x02).chr(0x44).
    chr(0x01).chr(0x00).chr(0x3B);
    }
    //FINE INIZIO CODICE
    ?>
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  2. #2
    Guest

    Predefinito

    Avrei voluto fare qualche test (sul tuo sito, non mi va di installarlo...), ma c'è qualche immagine? Inoltre mi pare che non sia raggiungibile se non c'è referer.

    Eventualmente si può creare un topic nel tuo forum con il link e vedere l'anteprima per avere il referer. Inoltre non ho mai provato ma so che il referer è falsificabile.

    Il controllo per evitare l'accesso alla cartella padre e per il tipo di file mi sembra buono. Per completare il tutto bisognerebbe impedire l'accesso via html alla cartella immagini attraverso il pannello di controllo. Il php ci arriva lo stesso!

  3. #3
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    esatto se non c'è referer non si vede nulla

    il referer non è così facilmente falsificabile (via client speciali si... ma con i browser no)

    il blocco da pannello di altervista deve essere messo per forza ;)
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  4. #4
    Guest

    Predefinito

    Ottimo script! Quasi come php2dns ;) .

  5. #5
    Guest

    Predefinito

    ottima idea. ora sto configurando il sito mio, comunque lo proverò

  6. #6
    L'avatar di gve
    gve
    gve non è connesso Utente storico
    Data registrazione
    26-01-2003
    Residenza
    Brescia
    Messaggi
    2,964

    Predefinito

    Ottimo Evcz!
    Provato, funziona bene, peccato non aver letto prima il forum: me ne ero gia` fatto uno simile nel pomeriggio, stavo per venire a postare ma vedo che mi hai battuto sul tempo; mi prendo un'attimo per confrontarli ;)
    Intanto te lo imposto subito come importante!
    | Regolamento del Forum | Regolamento di AlterVista | FAQ di AlterVista | Netiquette |

    GVE = GVE Virtual Extension
    AVCM #: 6637

  7. #7
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Ben fatto Evcz, proverò a breve, per ora l'ho solo eseguito mentalmente :grin:.
    L'unica limitazione direi riguarda chi, semplice visitatore e non il leecher, ha attivi per ragioni proprie le impostazioni di "occultamento di referrer".
    Vedi per es. Opera, impostazione "consenti referrer logging".
    In quel caso non vedrebbe l'immagine.
    Direi dunque di allargare -magari a scelta di chi utilizza lo script- un tantinello la manica verso i visitatori che disabilitano il referrer, lasciando comunque passare le stringhe di "Hidden Referrer" classiche, ne ho incontrate un po' sviluppando la mia Referrer List. Che dici?

    In completa alternativa penso la cosa ancor migliore (comunque ancora molto nebulosa come idea) possa essere lo sfruttamento delle SESSION php, cioè ti faccio vedere l'immagine SOLO se stai visitando il MIO sito e dunque ti ritrovi assegnato già il tuo bravo php-session ID.
    Che ne pensate? (certo un tantino più impegnativo ma più libero forse del basarsi sul referrer, comunque ripeto mi è balenata or-ora come idea...)
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  8. #8
    Guest

    Predefinito

    C'è qualche volenteroso che spiega a grandi linee come funziona? :D

  9. #9
    Guest

    Predefinito

    Io credo che non sarebbe male come idea....usando le sessioni si possono fare anche controlli incrociati ed esser sicuri che il visitatore stia realmente visitando il sito, poi si potrebbero aggiungere anche altre estenzioni e mascherare un pò meglio la cartella dove vengono raccolti i documenti :)

    Ne potrebbe uscir fuori un belloscript. :P

  10. #10
    Guest

    Predefinito

    allora questo è quello che avevo scritto io... io non riuscivo solo a tirare fuori l'output dell immagine
    Codice PHP:
    <?php

    /***************************************************************************
    *
    * Script Realizzato Da © | ~{Php Writer}~ | © (Neoscript) :D
    * Mail: [email]phpwriter@hotmail.com[/email]
    *
    ***************************************************************************
    *
    * Questo script controlla la provenienza della richiesta del file.
    * Se la provenienza della richiesta è autorizzata dall'admin, allora
    * lo script provvederà ad inviare la risposta corretta. Se invece la
    * richiesta non è autorizzata dall'admin lo script provvederà a contattare
    * l'admin e inviare una risposta personalizzata.
    *
    ***************************************************************************
    *
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation; either version 2 of the License, or
    * (at your option) any later version.
    *
    ***************************************************************************
    *
    * In poche parole quello che c'è scritto sopra dice che lo puoi
    * modificare, ridistribuire ma il copyright rimane sempre mio. :P
    *
    ***************************************************************************/

    // ############################## INIZIO CONFIGURAZIONE

    // Configurazione Script
    $script['nome'] = "Proteggi Banda"; // Definisce il nome dello script
    $script['versione'] = "Beta"; // Definisce la versione dello script
    $script['debug'] = false; // Definisce se visualizzare il debug dello script

    // Confirurazione Parametri
    $array['autorizzati'] = "localhost"; // Definisce i siti autorizzati per la richiesta

    // Configurazione Mail
    $mail['admin'] = "pippo@pappa.ext"; // Definisce la mail dell'admin da contattare in caso si "furto" :D
    $mail['invio'] = true; // Definisce se inviare o no la mail all'admin su un eventuale "furto" :D

    // NON TOCCARE
    $richiesta['risposta'] = false; // Definisce durante l'avvio dello script la risposta di default
    // NON TOCCARE

    // ############################## INIZIO SCRIPT

    // Recupero Dati Richiesta
    $richiesta['host'] = $_SERVER["HTTP_HOST"];
    $richiesta['risorsa'] = $_GET['ris'];

    if (
    $script['debug'] == true) { echo "[Host: ".$richiesta['host']."] - [File: ".$richiesta['risorsa']."]"; }

    // Elaboro I Dati Richiesta Con I Parametri Admin
    $array['controllo'] = explode("|", $array['autorizzati']);
    $x = count($array['controllo']);

    // Verifico La Provenienza Della Richiesta
    $i=0;
    while (
    $i != $x)
    {
    if (
    $script['debug'] == true) { if ($i != $x) { echo "<br>"; } echo "Array Permessi: [".$array['controllo'][$i]."] "; }
    if (
    $richiesta['host'] == $array['controllo'][$i])
    {
    $richiesta['risposta'] = true;
    }
    $i++;
    }

    // Rispondo Alla Richiesta
    if ($richiesta['risposta'] == true)
    {

    // Controllo Estensione File Richiesta
    // $risorsa['estensione'] = substr($richiesta['risorsa'], -3, 3);

    // Array Estensione File
    // $risorsa['download'] = "zip|rar|txt|exe|tar|gz";
    // $risorse['immagini'] = "jpg|jpeg|bmp|png|gif";

    }
    else
    {

    // Spedisco la mail all'indirizzo indicato, se il valore $mail['invio'] è impostato su true
    if ($mail['invio'] == true)
    {
    $mail['mittente'] = $script['nome']." [Versione: ".$script['versione']."]"; // Definisce il mittente della mail
    $mail['oggetto'] = "Appropriazione Di Risorsa Indebita"; // Definisce l'oggetto della mail
    $mail['testo'] = "
    Lo script 'Proteggi Banda' ha bloccato una richiesta da parte di un presunto 'ladro'<br>
    I dati che lo script ha registrato sono:<br>
    <br>
    ############################<br>
    # Host: "
    .$richiesta['host']."<br>
    # File: "
    .$richiesta['risorsa']."<br>
    ############################<br>
    <br>
    Con questi dati lei potrà effettuare controlli.<br>
    <br>
    Grazie e Arrivederci.<br>
    Powered by "
    .$script['nome']." [Versione: ".$script['versione']."]";

    // Invio La Mail
    mail ($mail['admin'], $mail['oggetto'], $mail['testo'], "From: ".$mail['mittente']."\r\n");

    if (
    $script['debug'] == true) { echo "<br>Mail Mittente: [".$mail['mittente']."]<br>Mail Oggetto: [".$mail['oggetto']."]<br>Mail Testo: [".$mail['testo']."]"; }
    }

    echo
    "<br>Siamo Spiacenti Ma Il Sito A Cui Stavi Rubando La Banda E' Protetto Dal ".$script['nome']." [Versione: ".$script['versione']."]. Vai A Fottere Qualcun'Altro!!! Coglione!!!";

    }
    ?>
    Ultima modifica di neoscript : 15-09-2004 alle ore 13.30.18

  11. #11
    L'avatar di gve
    gve
    gve non è connesso Utente storico
    Data registrazione
    26-01-2003
    Residenza
    Brescia
    Messaggi
    2,964

    Predefinito

    neoscript, credo che il tuo script non vada bene, il controllo sull'host non e` adeguato perche` sempre vero, visto ceh lo script lo installi sul tuo sito: il REFERER, a meno dell'idea di heracleum, credo sia l'unica via. Ora comunque verifico.

    ---EDIT---

    Esatto, verificato: sostituisci HTTP_HOST con HTTP_REFERER o e` tutto lavoro inutile.

    Interessante piuttosto l'idea di avere piu` siti autorizati, oltre al proprio.
    | Regolamento del Forum | Regolamento di AlterVista | FAQ di AlterVista | Netiquette |

    GVE = GVE Virtual Extension
    AVCM #: 6637

  12. #12
    Guest

    Predefinito

    il problema del referer e' che blocca anche gli utenti legittimi con referer occultato o che usano download manager (nel caso di un file generico piuttosto che un'img)
    il problema delle sessioni e' che ci sono casini se i cookies nn sono abilitati

    bisognerebbe fare un mix delle due, magari domani se ho tempo provo a buttare giu' qualkosina (dico sempre cosi', poi mi metto a giocare... :eyes: )

    tra l'altr:
    se il leecher conosce il php e si trova su una piattaforma che supporta le connessioni ad altri server, puo' richiedere l'img tramite una connessione ad hoc specificando come referer quello che vuole lui
    ma penso che lo 0.00001% dei leecher sia in grado di fare una cosa del genere
    Ultima modifica di dxblade : 16-09-2004 alle ore 00.40.25

  13. #13
    Guest

    Predefinito

    ho scritto anche io il mio "pezzo" in php
    eccolo, pero' prima due precisazioni
    1) la parte delle sessioni nn va, per implementarle ci vorrebbe tutto un altro sistema che tra l'altro ho gia' in mente e potrebbe venire anche bene, pero' mi serve + tempo che ora nn ho xke' devo andare a fare 1 guida (x la patente... :eyes:)
    2) qc mi spiega xke' l'immagine di errore esce fuori SOLO come png, mentre negli altri formati esce uno schifo???

    ecoo il code:
    Codice PHP:
    <?php
    $domain
    = "www.dxblade.tk";
    $authorized_referers = "dxblade.altervista.org,localhost";
    $accept_void_referers = true;
    $folder = "imgs/";
    $usesessions=true;
    $authorized_extensions = "gif,jpeg,jpg,png";

    //-------------- code
    $auth_refs = explode (",", $authorized_referers);
    $auth_exts = explode (",", $authorized_extensions);
    $img = $_GET['i'];
    $pos = strrpos ($img, ".");
    $pos++;
    if (
    $pos === false) {
    echo
    "NOT FOUND!";
    exit();
    }
    $extension = substr ($img, $pos);
    $ok_ext=false;
    foreach (
    $auth_exts as $ext) {
    if (
    $ext==$extension) $ok_ext=true;
    }
    if (
    $ok_ext==false) {
    $im = @imagecreate(160, 50);
    $background_color = imagecolorallocate($im, 0, 255, 255);
    $text_color = imagecolorallocate($im, 0, 0, 255);
    imagestring($im, 2, 5, 5, "Image Not Found", $text_color);
    $text_color = imagecolorallocate($im, 255, 0, 0);
    imagestring($im, 3, 5, 30, $domain, $text_color);

    if (
    function_exists("imagegif")) {
    header("Content-type: image/gif");
    imagegif($im);
    } elseif (
    function_exists("imagejpeg")) {
    header("Content-type: image/jpeg");
    imagejpeg($im, "", 0.5);
    } elseif (
    function_exists("imagepng")) {
    header("Content-type: image/png");
    imagepng($im);
    } elseif (
    function_exists("imagewbmp")) {
    header("Content-type: image/vnd.wap.wbmp");
    imagewbmp($im);
    }
    imagedestroy($im);
    exit();
    }


    if (isset (
    $_SERVER['HTTP_REFERER'])) {
    $referer = $_SERVER['HTTP_REFERER'];
    $referer = str_replace ("http://", "", $referer);
    $referer = str_replace ("www.", "", $referer);
    $ok_ref=false;

    foreach (
    $auth_refs as $ref){
    $pos = strpos ($referer, $ref);
    if (
    $pos===0) $ok_ref = true;
    }
    if (
    $ok_ref == false) {
    $im = @imagecreate(160, 50);
    $background_color = imagecolorallocate($im, 0, 255, 255);
    $text_color = imagecolorallocate($im, 0, 0, 255);
    imagestring($im, 2, 5, 5, "This image is property of", $text_color);
    $text_color = imagecolorallocate($im, 255, 0, 0);
    imagestring($im, 3, 5, 30, $domain, $text_color);

    if (
    function_exists("imagegif")) {
    header("Content-type: image/gif");
    imagegif($im);
    } elseif (
    function_exists("imagejpeg")) {
    header("Content-type: image/jpeg");
    imagejpeg($im, "", 0.5);
    } elseif (
    function_exists("imagepng")) {
    header("Content-type: image/png");
    imagepng($im);
    } elseif (
    function_exists("imagewbmp")) {
    header("Content-type: image/vnd.wap.wbmp");
    imagewbmp($im);
    }
    imagedestroy($im);
    exit();
    }
    } elseif (
    $accept_void_referers == false) {
    $im = @imagecreate(160, 50);
    $background_color = imagecolorallocate($im, 0, 255, 255);
    $text_color = imagecolorallocate($im, 0, 0, 255);
    imagestring($im, 2, 5, 5, "This image is property of", $text_color);
    $text_color = imagecolorallocate($im, 255, 0, 0);
    imagestring($im, 3, 5, 30, $domain, $text_color);

    if (
    function_exists("imagegif")) {
    header("Content-type: image/gif");
    imagegif($im);
    } elseif (
    function_exists("imagejpeg")) {
    header("Content-type: image/jpeg");
    imagejpeg($im, "", 0.5);
    } elseif (
    function_exists("imagepng")) {
    header("Content-type: image/png");
    imagepng($im);
    } elseif (
    function_exists("imagewbmp")) {
    header("Content-type: image/vnd.wap.wbmp");
    imagewbmp($im);
    }
    imagedestroy($im);
    exit();
    }

    //if ($usesessions) {
    //session_start();
    // if (session_id()!="") {
    // echo "session is ok";
    // } else {
    // echo "no session";
    // }
    //}


    $img = $folder . $img;
    $size = @getimagesize ($img);
    $fp = @fopen ($img, "rb");
    if (
    $size && $fp) {
    header ("Content-type: " . $size['mime']);
    fpassthru($fp);
    exit();
    } else {
    $im = @imagecreate(160, 50);
    $background_color = imagecolorallocate($im, 0, 255, 255);
    $text_color = imagecolorallocate($im, 0, 0, 255);
    imagestring($im, 2, 5, 5, "Image not found", $text_color);
    $text_color = imagecolorallocate($im, 255, 0, 0);
    imagestring($im, 3, 5, 30, $domain, $text_color);

    if (
    function_exists("imagegif")) {
    header("Content-type: image/gif");
    imagegif($im);
    } elseif (
    function_exists("imagejpeg")) {
    header("Content-type: image/jpeg");
    imagejpeg($im, "", 0.5);
    } elseif (
    function_exists("imagepng")) {
    header("Content-type: image/png");
    imagepng($im);
    } elseif (
    function_exists("imagewbmp")) {
    header("Content-type: image/vnd.wap.wbmp");
    imagewbmp($im);
    }
    imagedestroy($im);
    exit();
    }

  14. #14
    L'avatar di gve
    gve
    gve non è connesso Utente storico
    Data registrazione
    26-01-2003
    Residenza
    Brescia
    Messaggi
    2,964

    Predefinito

    Evcz, il tuo script e` fondamentalmente come il mio, anzi lo ho sfruttato per correggere alcuni problemi di solidita` che aveva il mio nel controllo del referer. Piccola differenza, ma non sostanziale per il risultato: non uso le GD, anche per il riconoscimento del file mi appoggio alla sola estensione.

    Una soluzione semplice al problema dell'assenza del referer e` secondo me quella di lasciar passare tali connessioni anziche` bloccarle: al leecher la cosa non porta giovamento, visto che credo che gli utenti che navigano senza referer siano meno dell'1%, per cui la cosa non e` sfruttabile visto che tali pagine nella maggior parte dei casi non risulterebbero navigabili.
    (se poi uno sa fare quello che dice dxblade, della cosa non gliene frega comunque niente).
    La cosa si puo` anche lasciare alla scelta del webmaster.

    Per quanto riguarda le sessioni non so ... in realta` non le ho mai usate, ma da quel che so cio` richiederebbe di mettere mano un po' a tutte le pagine del sito, o almeno a quelle con le immagini da protegere, trasformandole in php; Comunque richiede qualcosa di piu` della semplice modifica dei link, e io sono per mantenere le cose il piu` semplici possibile, se la cosa e` sufficiente, e credo che il metod dei referer sia sufficiente: al leecher che utilita` ha linkare un'immagine visibile solo da una bassissima percentuale di utenti che adottano particolari accorgimenti? Ovviamente sono intererssato al vostro parere al riguardo.

    Intanto, eccovi lo script di Evcz modificato con la possibilita` di scegliere se accettare il referer assente o no:

    --EDIT--
    Aggiunto anche possibilita` di abilitare piu` domini
    --------

    Codice PHP:
    <?PHP
    //php antileecher
    //created by evolutioncrazy
    //marco@evcz.tk
    //concesso sotto licenza gnu/gpl versione 2 o successiva
    //versione 0.1

    //file supportati: gif, jpeg, png

    //per richiamare un'immagine risiedente nella cartella /images/
    //al posto dell'url dell'immagine mettere:
    //http://evcz.altervista.org/img.php?img=nomefile.gif
    //se l'immagine si trova in una sottocartella usare questa url
    //http://evcz.altervista.org/img.php?img=sottocartella/nomefile.gif

    //se il tipo di file richiesto non corrisponde ai previsti oppure il dominio dove è usato non corrisponde al previsto viene
    //mandata in uscita un gif trasparente 1px*1px

    // *gve mod*
    // se non viene passato referer:
    // $noref=TRUE -> l'immagine viene caricata (default)
    // $noref=FALSE -> l'immagine viene rifiutata
    // aggiunto multidominio

    //SECURITY - non toccare
    unset($dominio);

    //SETTAGGI
    //domini senza www, senza http e senza fronzoli vari
    $dominio[] = "evcz.altervista.org";
    $dominio[] = "gve.altervista.org";

    //cartella protetta con la funziona del pannello di controllo
    $fullpath = "/membri/gve/";

    //comportamento se referer assente (gve mod)
    $noref=TRUE;

    //FINE SETTAGGI

    //INIZIO CODICE (non occorre modificare nulla da qui in poi)

    //controllo referer (gve mod)
    if(isset($_SERVER['HTTP_REFERER'])) {
    $referer = strtolower($_SERVER['HTTP_REFERER']);
    $referer = str_replace("http://", "", $referer);
    $referer = str_replace("www.", "", $referer);
    $referer = strtok($referer, '/');
    $img = str_replace("../", "", $img);
    for(
    $i=0;$i<=count($domimio);$i++)
    if (
    $referer==$dominio[$i]) break;
    if (
    $referer==$dominio[$i]) $noref=TRUE;
    else
    $noref=FALSE;
    }

    if(isset(
    $dom)?$dom:$noref){
    //controllo effettiva estensione
    $tipo = getimagesize($fullpath."".$img);
    switch(
    $tipo['mime']){
    case
    "image/gif":
    $estensione = ".gif";
    break;
    case
    "image/jpeg":
    $estensione = ".jpg";
    break;
    case
    "image/png":
    $estensione = ".png";
    break;
    default:
    $estensione = "VIETATA";
    break;
    }
    if(
    $estensione != "VIETATA"){
    header ("Content-Type: ".$tipo['mime']);
    $size = filesize($fullpath."".$img);
    header ("Content-Length: ".$size);
    readfile($fullpath."".$img);
    exit();
    }
    else{
    header ("Content-Type: image/gif");
    header ("Content-Length: 43");
    echo
    chr(0x47).chr(0x49).chr(0x46).chr(0x38).chr(0x39).chr(0x61).chr(0x01).chr(0x00).
    chr(0x01).chr(0x00).chr(0x80).chr(0x00).chr(0x00).chr(0x04).chr(0x02).chr(0x04).
    chr(0x00).chr(0x00).chr(0x00).chr(0x21).chr(0xF9).chr(0x04).chr(0x01).chr(0x00).
    chr(0x00).chr(0x00).chr(0x00).chr(0x2C).chr(0x00).chr(0x00).chr(0x00).chr(0x00).
    chr(0x01).chr(0x00).chr(0x01).chr(0x00).chr(0x00).chr(0x02).chr(0x02).chr(0x44).
    chr(0x01).chr(0x00).chr(0x3B);
    }
    }
    else{
    header ("Content-Type: image/gif");
    header ("Content-Length: 43");
    echo
    chr(0x47).chr(0x49).chr(0x46).chr(0x38).chr(0x39).chr(0x61).chr(0x01).chr(0x00).
    chr(0x01).chr(0x00).chr(0x80).chr(0x00).chr(0x00).chr(0x04).chr(0x02).chr(0x04).
    chr(0x00).chr(0x00).chr(0x00).chr(0x21).chr(0xF9).chr(0x04).chr(0x01).chr(0x00).
    chr(0x00).chr(0x00).chr(0x00).chr(0x2C).chr(0x00).chr(0x00).chr(0x00).chr(0x00).
    chr(0x01).chr(0x00).chr(0x01).chr(0x00).chr(0x00).chr(0x02).chr(0x02).chr(0x44).
    chr(0x01).chr(0x00).chr(0x3B);
    }
    //FINE INIZIO CODICE
    ?>
    | Regolamento del Forum | Regolamento di AlterVista | FAQ di AlterVista | Netiquette |

    GVE = GVE Virtual Extension
    AVCM #: 6637

  15. #15
    Guest

    Predefinito

    si, solo che con la versione modificata dello script di evcz da gve non supporta il multi dominio...

  16. #16
    L'avatar di gve
    gve
    gve non è connesso Utente storico
    Data registrazione
    26-01-2003
    Residenza
    Brescia
    Messaggi
    2,964

    Predefinito

    Mi ero dimenticato neoscript ... aggiunto (ho modificato il messaggio precedente).
    | Regolamento del Forum | Regolamento di AlterVista | FAQ di AlterVista | Netiquette |

    GVE = GVE Virtual Extension
    AVCM #: 6637

  17. #17
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Citazione Originalmente inviato da dxblade
    il problema delle sessioni e' che ci sono casini se i cookies nn sono abilitati
    Sì ma se nella richiesta dell'immagine gli si passa nell'url il SessionID non penso ci siano proplemi, anzi direi che è d'obbligo passarglielo!

    Spesso ci si dimentica perché farlo per tutto un sito con i link in questo modo c'è da impazzire... ma solo per le chiamate alle immagini potrebbe andare più che bene.

    Inoltre il controllo potrebbe essere molto più semplice: se non mi passi un ID corretto niente immagine. Certo usare SOLO questo metodo potrebbe limitare decisamente il discorso degli altri "allowed domains" in cui permettere di mostrarle, ma come metà dello script (da usare solo se ci si trova in siti estranei) dovrebbe andar bene.

    Scusate l'eccessiva teoria a discapito della pratica (niente script) ma sono pigro e poi già ce ne sono parecchi di script proposti (scuse pietose buuu! OLD )
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  18. #18
    Guest

    Predefinito

    Citazione Originalmente inviato da heracleum
    Sì ma se nella richiesta dell'immagine gli si passa nell'url il SessionID non penso ci siano proplemi, anzi direi che è d'obbligo passarglielo!

    Spesso ci si dimentica perché farlo per tutto un sito con i link in questo modo c'è da impazzire... ma solo per le chiamate alle immagini potrebbe andare più che bene.

    Inoltre il controllo potrebbe essere molto più semplice: se non mi passi un ID corretto niente immagine. Certo usare SOLO questo metodo potrebbe limitare decisamente il discorso degli altri "allowed domains" in cui permettere di mostrarle, ma come metà dello script (da usare solo se ci si trova in siti estranei) dovrebbe andar bene.

    Scusate l'eccessiva teoria a discapito della pratica (niente script) ma sono pigro e poi già ce ne sono parecchi di script proposti (scuse pietose buuu! OLD )
    infatti io nn ho detto che non si puo' fare se i cookies sn disabilitati, ho detto solo che ci sono casini OLD
    e per me scrivere un url attaccandoci <?php echo SID?> E' un casino OLD:grin:

    cmq ancora nn ho capito perche' nello script che ho postato su l'img di errore esce bene solo come png, qlk1 me lo spiega???:?????:

    edit: cmq mica e' tanto facile validare un sid, la cosa migliore e' controllare se una variabile (definita dall'utente dello scipt) e' registrata nella sessione... pero' ci vuole un approccio diverso, meno "plug & play" rispetto al metodo del referer
    Ultima modifica di dxblade : 18-09-2004 alle ore 20.39.27

  19. #19
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Come? validare un SessionID??
    Perché devi farlo tu?

    Cioè (sempre parlando dal comodo pulpito della mia pigra realtà teorica :grin:)
    un SID, qualora sia passato, se lo vede arrivare come paramentro lo script in questione.
    A questo punto lo script, visto che gira in un contesto sottoposto a Session, ha un suo REALE sessionID per l'utente corrente, che è sicuramente valido, ok? (sto prendendo tempo, sto improvvisando alla grande, vado "a braccio" OLD)

    Dunque... uhmmm. sì, a questo punto basta vedere se il SessionID passato combacia con quello corrente:
    se sì vuol dire che l'utente sta visitando il sito e ha visualizzato l'IMG con SRC creato dal sito stesso.
    Altrimenti non saprei proprio come un sito esterno possa riuscire a generare URL con un sessioID valido.

    Non so se mi piego :grin:
    (fammi rileggere vah)
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  20. #20
    Guest

    Predefinito

    Citazione Originalmente inviato da heracleum
    Come? validare un SessionID??
    Perché devi farlo tu?

    Cioè (sempre parlando dal comodo pulpito della mia pigra realtà teorica :grin:)
    un SID, qualora sia passato, se lo vede arrivare come paramentro lo script in questione.
    A questo punto lo script, visto che gira in un contesto sottoposto a Session, ha un suo REALE sessionID per l'utente corrente, che è sicuramente valido, ok? (sto prendendo tempo, sto improvvisando alla grande, vado "a braccio" OLD)

    Dunque... uhmmm. sì, a questo punto basta vedere se il SessionID passato combacia con quello corrente:
    se sì vuol dire che l'utente sta visitando il sito e ha visualizzato l'IMG con SRC creato dal sito stesso.
    Altrimenti non saprei proprio come un sito esterno possa riuscire a generare URL con un sessioID valido.

    Non so se mi piego :grin:
    (fammi rileggere vah)
    no da quel che so nn va cosi'
    per validare una sessione tu devi controllare se una variabile che tu sai essere stata registrata in precedenza e' valida

    io avevo scritto di validare il sid perche' pensavo fosse quello che tu intendevi per "vedere se passa un sid giusto"
    invece la tecnica che tu dici presuppone che il php sappia di per se' qual e' il sid corrente, mentre lui carica la sessione proprio in base al sid passato tramite get/cookie: se qst corrisponde a un sid esistente ripristina la sessione corrente, altrimenti ne crea una nuova o da' un errore (nn sono sicuro), ma in ogni caso nn mi sembra molto pratico basarsi su una validazione esterna qnd puoi farne una tu facilmente in base a una variabile conosciuta, gestendoti poi autonomamente le condizioni di errore ecc

  21. #21
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Dxblade: mi sa proprio che hai ragione :grin:

    crittografia:
    infatti con .htaccess basta veramente aggiugnere qualche linea
    tot linee per gli url consentiti
    e infine una sola linea per reindirizzare a una gif di default nel caso si debba bloccare il leeching.

    Sarebbe una soluzione poter indicare nel pannello di AV alcune linee che andranno a far parte nel file .htaccess (che non si modifica direttamente, come avviene ora per il lock alle cartelle), ...forse si temono abusi?
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  22. #22
    Guest

    Predefinito

    Citazione Originalmente inviato da heracleum
    Sarebbe una soluzione poter indicare nel pannello di AV alcune linee che andranno a far parte nel file .htaccess (che non si modifica direttamente, come avviene ora per il lock alle cartelle), ...forse si temono abusi?
    per poter usarli bisognerebbe avere il mod_rewrite attivato, che richiede un'apposita direttiva AllowOverride in php.ini. qst direttiva attiverebbe solo il rewrite engine e qlk altra fuzione a mio parere del tutto sicura, ma *dicono* che nn si puo' fare e chi comanda ha sempre ragione

    il fatto di modificare via pannello come dici tu non cambia niente, perche' il .htaccess lo puoi modificare anche a mano tramite un ftp

    del mod_rewrite si e' parlato un sacco di volte e non ci e' mai stato dato un motivo valido per la sua mancanza (anzi per la verita' ogni volta sparano un motivo diverso, mah :eyes:)

  23. #23
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Beh sì come la libreria Freetype,
    penso ci si tenga sull'indispensabile per non richiare pesantezze ai server...

    Comunque proprio da poco ho ottenuto (con fatica) uno spazietto free hosting da paura :grin:
    finalmente posso smanettare in santa pace tutte queste "feature negate" (freetype, mod_rewrite, url_fopen e tanto altro).
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  24. #24
    Guest

    Predefinito

    Citazione Originalmente inviato da heracleum
    Beh sì come la libreria Freetype,
    penso ci si tenga sull'indispensabile per non richiare pesantezze ai server...

    Comunque proprio da poco ho ottenuto (con fatica) uno spazietto free hosting da paura :grin:
    finalmente posso smanettare in santa pace tutte queste "feature negate" (freetype, mod_rewrite, url_fopen e tanto altro).
    dove dove dove? :sbav:
    lo vojo anco io :p

  25. #25
    Guest

    Predefinito

    ecchime... spazio free con il mod_rewrite e company... link prego...

  26. #26
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Oh stiamo andando svariatamente OffTopic no?
    Per le info sullo spazietto ho aperto quest'altro thread:
    http://forum.altervista.org/showthread.php?p=197599

    passiamo al topic originale, please
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  27. #27
    Guest

    Predefinito

    Scusate l'ignoranza, ma a cosa serve questo script?
    e come si installa?

  28. #28
    Guest

    Predefinito

    Citazione Originalmente inviato da puntoscienza
    Scusate l'ignoranza, ma a cosa serve questo script?
    e come si installa?
    lo quoto a cosa serve?come si installa?

  29. #29
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    Citazione Originalmente inviato da cellularmania
    lo quoto a cosa serve?come si installa?
    dopo la recente implementazione dei filtri antileech a livello server questo script non ha più alcun senso

    il suo scopo originale era quello di controllare che il file richiesto per il download provenisse da un link sul proprio sito... se invece la richiesta avveniva tramite un link su di un sito esterno la visualizzazione falliva :winkOLD:
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  30. #30
    Guest

    Predefinito

    a ok allora come nel mio caso che uso un file .htaccess per evitare che altri usino i miei download su siti esterni!

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •