Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kuvien hallinta

Sivun loppuun

manninen [02.07.2014 13:43:07]

#

Poistan kuvan palvelimelta tällä tavalla, Intran kautta.

Kuinka paljon tämä aiheuttaa riski / vaaratilanteita

delete_img();

  // POISTA KUVA
  function delete_img()
  {

    $myFile = $_GET['img_name'];

    if(empty($myFile))
    {

      return;

    }

    unlink("tiedostot/$myFile");

  }

Voisitteko antaa hieman tietoturvaan nähden parannuksia.

---

Tällä tavalla taas listaan tiedostot palvelimelta, olisiko tähän antaa tietoturvaan / toteutukseen nähden lisäinfoa. En halua, että jokainen pääsee näiden avulla sorkkimaan koko palvelintilaani :

public function t_list_file()
  {

    $dir = "tiedostot";

    print '<center><table celpadding=0 cellspacing=0 class="table">';

      $hakemisto = opendir("$dir/");

      $nimi = readdir($hakemisto);

      while ($nimi)
      {

        if($nimi == '.' || $nimi == '..')
        {



        }
        else
        {

           print '<tr>';

             print '<td><a href="./tiedostot/'.$nimi.'">'. $nimi .'</a></td>';
             print '<td><a href="./delete_img.php?img_name='.$nimi.'"> [ poista ]</a></td></tr>';


        }


         $nimi = readdir($hakemisto);
      }

      closedir($hakemisto);


    print '</table></center>';

  }

Lebe80 [02.07.2014 13:46:02]

#

Tarkista tiedoston polku, tarkista tiedoston pääte.

manninen [02.07.2014 14:25:50]

#

Miten olisi mahdollista, tehdä myös hakuominaisuus joka etsii tiedostot joka sisältää hakuehdon antaman merkkijonon.

Lebe80 [02.07.2014 14:35:30]

#

Laittamalla tiedostoista tarvittavat tiedot tietokantaan. Auttaa samalla tietoturvaan myös alkuperäiseen ongelmaasi, kun poistotoiminnon voi tehdä yksilöivällä id-numerolla.

manninen [02.07.2014 14:48:30]

#

Sitä arvelinkin, mutta toivoin oikotietä onneen ;)

Tässä tapauksessa tietenkin tietoturvan yms. huomioon ottamisen kannalta, ei tietenkään kannata alkaa oikomaan polkuja vaan lähteä toteuttamaan homma oikein ja kunnolla, kun kerran kanta pyörii taustalla muiden asioiden takia.

Metabolix [02.07.2014 16:39:34]

#

Kun kerran tietokanta on, kaikkein turvallisinta ja lopulta jopa helpointa on tallentaa tietokantaan kaikki tarvittavat kuvien tiedot ja tallentaa itse kuvatiedostot uusilla nimillä id:n mukaan (1.jpg, 2.jpg). Näin ratkeavat kaikki tiedostonimiin liittyvät tietoturvaongelmat, kun tiedoston alkuperäinen nimi on vain merkkijonona tietokannassa ja kaikissa muissa vaiheissa – tallennus, katselu, poisto – voidaan käyttää yksinkertaista ja turvallista tiedostonimeä. Joissain tilanteissa jopa itse tiedoston voisi laittaa tietokantaan vaikkapa MEDIUMBLOB-tyyppisenä kenttänä, mutta tästä toki aiheutuu turhaa kuormaa tietokantaan ja skripteille, kun kuvien katselukin pitää kierrättää PHP:n ja SQL:n kautta.

feenix [03.07.2014 14:26:29]

#

manninen kirjoitti:

$myFile = $_GET['img_name'];
// ...
unlink("tiedostot/$myFile");

Ja esimerkkinä tuollaisen toteutuksen mahdollisista ongelmista: anna parametriksi ../sopiva.php ja hupsista, on koodia kateissa (olettaen että prosessilla on oikeudet tuhota niitä, ei toki saisi olla, mutta...). Eli voi päästä mihin tahansa tiedostoon käsiksi kun mitenkään ei tarkisteta, että pysytään tiedostot-hakemiston alapuolella.

manninen [03.07.2014 20:37:06]

#

Kiitoksia kattavista ja opettavista neuvoista, näitä on ilo lukea.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta