Visualizzazione risultati 1 fino 10 di 10

Discussione: Caricare file sul server: come bloccare alcuni tipi di file?

  1. #1
    Guest

    Predefinito Caricare file sul server: come bloccare alcuni tipi di file?

    Il mio problema è questo:
    Ho fatto un'hasting in php, ma non riesco a bloccare alcuni file dannosi,
    esempio una shell!
    Ho provato a scrivere qualcosa, ma con esiti negativi.
    Cosa posso fare?

  2. #2
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Potresti usare .htaccess però voglio ricordarti che:
    Citazione Originalmente inviato da Regolamento di AlterVista
    4.1 Non è consentito pubblicare materiale pornografico, osceno o illegale, a titolo esemplificativo ma non esaustivo: software pirata, cracks, warez, malware, virus, siti di phishing (fake login), mp3 che violino la normativa sul diritto d'autore, materiale che possa cagionare danno a terzi.

    4.4 Non è consentito utilizzare un account come semplice spazio per depositare file da scaricare, elementi dinamici o altro materiale utilizzato da siti esterni, nonché creare più account per un singolo Sito Ospitato (cosiddetto "mirroring"), o per ospitare parti di esso.
    Apprezzi l'aiuto? Offrimi un caffè!

  3. #3
    Guest

    Predefinito

    $_FILES['file']['type'] contiene il MIME type del file; tu lato PHP controlla che questo tipo sia fra la lista di files a cui permetti di essere caricati; se non lo è, non lo fai caricare.

  4. #4
    Guest

    Predefinito

    Un esempio...
    Codice PHP:
    /***** Controllo Estensione del File *****/
    $tipofile = pathinfo($file); // Tipo file tramite estensione senza "."

    $filecon = array('png','bmp'); // Tipo di file consentito tramite estensione senza "."...

    /** Controllo Estensione Consentita **/
    if($tipofile == $filecon) {

    //codice positivo

    }
    /** Se il file non è consentito stampo l'errore **/
    else{

    echo
    "Tipo file non consentito!";

    }
    Ultima modifica di sIM : 09-06-2008 alle ore 12.26.12

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    Un esempio...
    Codice PHP:
    /***** Controllo Estensione del File *****/
    $tipofile = pathinfo($file); // Tipo file tramite estensione senza "."

    $filecon = array('png','bmp'); // Tipo di file consentito tramite estensione senza "."...

    /** Controllo Estensione Consentita **/
    if($tipofile == $filecon) {

    //codice positivo

    }
    /** Se il file non è consentito stampo l'errore **/
    else{

    echo
    "Tipo file non consentito!";

    }
    ?

    al massimo l'if dovrebbe essere:

    Codice PHP:
    if(in_array($tipofile, $filecon)){
    ...
    }
    non ha senso confrontare un array con un semplice valore...

    EDIT:

    E ora che guardo meglio neanche il semplice pathinfo restituisce l'estensione, ma un array il cui elemento "extension" rappresenta l'estensione.
    Quindi il confronto da fare dovrebbe essere:

    Codice PHP:
    if(in_array($tipofile['extension'], $filecon)){
    ...
    }
    Ultima modifica di Zorinik : 09-06-2008 alle ore 12.50.45

  6. #6
    Guest

    Predefinito

    Non ho capito bene come devo fare.
    Codice PHP:
    if(in_array($tipofile['extension'], $filecon)){
    ...
    }
    Dove c'è scritto extension, cosa ci devo mettere?

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da gabryhacker Visualizza messaggio
    Non ho capito bene come devo fare.
    Codice PHP:
    if(in_array($tipofile['extension'], $filecon)){
    ...
    }
    Dove c'è scritto extension, cosa ci devo mettere?
    Niente extension è la chiave dell'array che contiene l'estensione.

  8. #8
    Guest

    Predefinito

    Ho provato ma non funziona.Posto il codice php:
    Codice PHP:
    <html>
    <head>
    <title>Risultato</title>
    <style>
    body {
    background-color:black;
    font-family:comic sans ms;
    color:yellow;
    }
    </style>
    </head>
    <body link="blue" vlink="blue" alink="orange">
    <?php
    $sorgente
    = $_FILES['file']['tmp_name'];
    $directory = "file/";
    $nome = basename($_FILES['file']['name']);
    /***** Controllo Estensione del File *****/
    $tipofile = pathinfo($file);
    $filecon = array('png','bmp','jpg','gif','mp3','xml','txt','pdf','doc','xls','rar','zip');
    if (
    in_array($tipofile['extension'], $filecon)){
    move_uploaded_file($sorgente, $directory.$nome);
    if (!
    $sorgente) {
    echo
    "Errore nel caricamento del file<br>";
    echo
    "<a href=\"invia.html\">Torna indietro</a>\n";
    }
    else {
    echo
    "File inviato con successo<br>";
    echo
    "Il link del tuo file &egrave;:";
    echo
    "<a href=\"http://www.gabryhacker.altervista.org/file/$nome\">$nome</a><br>";
    echo
    "<a href=\"invia.html\">Torna indietro</a>\n";
    }
    }
    else {
    echo
    "<script type=\"text/javascript\"\n>";
    echo
    "window.alert('Non puoi inviare questo tipo di file');";
    }
    </
    body>
    </
    html>
    EDIT:
    risolto.Mancava la fine dello script.
    EDIT2:
    ho detto che andava bene perchè ho provato a caricare un file proibito.Il bello è che non mi carica nulla!
    Ultima modifica di gabryhacker : 09-06-2008 alle ore 16.33.14

  9. #9
    Guest

    Predefinito

    Risposta...
    Edit (mio): Come fai a vedere se il file è stato inserito se hai messo la variabile $sorgente??
    Se mai:
    Codice PHP:
    if($nome == "" OR $sorgente == "") {
    echo
    "Errore nel caricamento del file<br>";
    echo
    "<a href=\"invia.html\">Torna indietro</a>\n";
    }
    // Fine: $sorgente e $nome sono vuoti..
    else{
    if (
    in_array($tipofile['extension'], $filecon)) {
    // codice
    }
    }
    // Fine: $sorgente e $nome sono compilati..
    ed elimini questa parte:
    Codice PHP:
    if (!$sorgente) {
    echo
    "Errore nel caricamento del file<br>";
    echo
    "<a href=\"invia.html\">Torna indietro</a>\n";
    }
    =================
    Edit: devi aggiungere prima di "</body>
    </html>" questo "?>"
    =================
    Edit2: E' giusto che non carica nulla..perchè non è un file consentito (almeno file proibito io intendo questo)...
    Ultima modifica di sIM : 09-06-2008 alle ore 19.45.32

  10. #10
    Guest

    Predefinito

    Tutto risolto.Posto il codice corretto:
    Codice PHP:
    <html>
    <head>
    <title>Risultato</title>
    <style>
    body {
    background-color:black;
    font-family:comic sans ms;
    color:yellow;
    }
    </style>
    </head>
    <body link="blue" vlink="blue" alink="orange">
    <?php
    $sorgente
    = $_FILES['file']['tmp_name'];
    $directory = "file/";
    $nome = basename($_FILES['file']['name']);
    /***** Controllo Estensione del File *****/
    $tipofile = pathinfo($nome);
    $fileicon = array('png','bmp','jpg','gif','mp3','xml','txt','pdf','doc','xls','rar','zip');
    if (
    in_array($tipofile['extension'], $fileicon)){
    move_uploaded_file($sorgente, $directory.$nome);
    if (!
    $sorgente) {
    echo
    "Errore nel caricamento del file<br>";
    echo
    "<a href=\"invia.html\">Torna indietro</a>\n";
    }
    else {
    echo
    "File inviato con successo<br>";
    echo
    "Il link del tuo file &egrave;:";
    echo
    "<a href=\"http://www.gabryhacker.altervista.org/file/$nome\">$nome</a><br>";
    echo
    "<a href=\"invia.html\">Torna indietro</a>\n";
    }
    }
    else {
    echo
    "<script type=\"text/javascript\">\n";
    echo
    "window.alert('Non puoi inviare questo tipo di file');\n";
    echo
    "</script>"
    }
    ?>
    </body>
    </html>

Regole di scrittura

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