Szerver és fájlrendszer

Háttér anyag főbb programozási nyelvek és elrendezését oldalakon.

Ready technika létrehozására egyszerű és összetett dinamikus weboldalak PHP és a MySQL.

fejlesztése weboldalak a „kulcs”.

Fejlődés az egyes töredékek oldalak, tanácsot az elrendezés a weboldalak és web programozás.

Web eszköz

webáruház

webes szolgáltatások

Web Graphics

Web Resources

Szerver és fájlrendszer

Azt szeretnénk, hogy lépést tartsanak a fejlődés zajlik a helyszínen? Jelentkezzen be, hogy a legfrissebb hírek és cikkek.

Nézd a Google

A fájlrendszer és a szerver. Fájlok letöltése. PHP-script dolgozni fájlokat

Szerver és fájlrendszer

Képzeljünk el egy olyan helyzetet, ahol az ügyfél kell, hogy képes megváltoztatni a tartalmát a weboldal - például a legfrissebb híreket a cég. Az egyik módja ennek az, hogy a kliens le a szöveges fájl. Ezután ezeket a fájlokat az interneten lesz elérhető maszkon keresztül fejlesztett PHP.

Ehhez mi kell érteni, hogy a fájl feltölteni a szerverre.

fájlok feltöltése

A PHP elérhető egy nagyon hasznos funkció - támogatja fájlok letöltését HTTP-n keresztül protokoll. Ahelyett fájlok fogadására a HTTP-n keresztül protokoll a szerver a böngészőnek, küldünk neki az ellenkező irányba, vagyis a böngésző a szervernek. Ez általában érvényes HTML-formában. Forma, amely azt fogja használni, ahogy.

Amint az ábrán látható, az űrlap tartalmaz egy beviteli mező, ahol a felhasználó adja meg a fájl nevét, vagy kattintson a „Tallózás” gombot fájlok érhetők el a helyi gépen. Talán még nem látott formában kell feltölteni a fájlokat. Az alábbiakban bemutatjuk, hogyan valósítható meg.

Megadása után a fájl nevét, a felhasználó rákattint a „Send file”, és a fájl feltöltve a kiszolgálóra, ahol megvárja a PHP-script.

Végrehajtásához fájlfeltöltés alkalmaz valamilyen HTML szerkezetek kifejezetten erre a célra.

upload.html - HTML formátumú fájlok letöltéséhez



Administration - új fájlokat letölteni





fájl feltöltése




Venni ezt a különleges formáját.

  • A leíró
    be kell állítania a enctype = „multipart / form-data”, hogy a szerver észleli, hogy együtt a szokásos formáját információt elküldtük, és a fájlt.
  • Az űrlap tartalmaznia kell egy olyan területen, amely megadja a maximális feltölthető fájlok méretének. Ez a rejtett mező, és ez képviseli a HTML-tag:

A név a forma terén kell MAX_FILE_SIZE. Ennek értéke a maximális mérete (byte) fájlok tölthetők fel. Itt állított 100000 bájt (1 MB). A mi alkalmazás, akkor lehet, hogy kisebb vagy nagyobb.
  • Az űrlap kötelezően tartalmazza a mező azt a fájltípust, mi meg a következők szerint:

    Név beviteli mező, akkor bármelyik, már csak azt kell megjegyezni, mert a nevet fogja használni a fogadó PHP-script elérni a fájlt.

  • Mielőtt tovább, érdemes emlékeztetni arra, hogy az egyes verziók PHP biztonsági réseket jelen a kód letöltés. Ha úgy dönt, hogy használja a letöltést a termelési kiszolgálóval, akkor meg kell, hogy megbizonyosodjon arról, hogy telepítve van a legújabb verzióját a PHP, és kövesse a kibocsátás változathoz és frissítéseket.

    Ez nem lehet ok arra, hogy megtagadják olyan hasznos technológia, de ha írásban kódot kell, hogy legyen óvatos, és próbálja korlátozni a hozzáférést az összes, de a rendszergazda a helyét és tartalmát a vezetők.

    A szkript a fájlok

    fájlfeltöltés PHP-kód nagyon egyszerű, de ez attól függ, hogy a PHP verzió és konfigurációs beállításokat. Funkció nevek és a változók változnak verziójukban, attól függően, hogy a lenyugvó register_globals be van kapcsolva. A kódot nem igényel register_globals, de ehhez impolzovaniya PHP verzióban nem kisebb, mint 4,1.

    A letöltött fájl kerül egy helyet fenntartani egy webszerver az ideiglenes fájlokat. Alapértelmezésben ez a fő ideiglenes webszerver könyvtárba. Ha a fájl nem lesz átnevezve, és nem mozdul, amíg a végén a forgatókönyvet, azt meg kell semmisíteni.

    Az adatok feldolgozása a PHP-scriptek vannak tárolva a szuperglobális $ _FILES. Ha register_globals be van kapcsolva, az adatok lehetséges és azonnali hozzáférést változó nevét. De itt, talán ez az a hely, ahol jobb letiltani register_globals és adatokkal dolgoznak a szuperglobális tömb.

    Elemeket a $ _FILES tömb lesz elmentve a névtáblát a HTML-formában. Mivel egy olyan űrlap elemnek van neve userfile, a tömb így néz ki:

    • A tárolt érték $ _FILES [ „userfile”] [ „tmp_name”], az a hely, tárolására a fájlt a webszerver.
    • A tárolt érték $ _FILES [ „userfile”] [ „name”], az imnem fájlt a felhasználó rendszerét.
    • A tárolt érték $ _FILES [ 'userfile'] [ 'size'], jelzi, hogy a fájl mérete bájtban.
    • A tárolt érték $ _FILES [ 'userfile'] [ 'type'] fájlt tartalmaz MIME-típus, például text / plain vagy image / gif.
    • A tárolt érték $ _FILES [ „userfile”] [ „error”], tartalmazni fog egy hibakód történt a fájl letöltése.

    Most, hogy tudja, hol található a fájl, és mi a neve, akkor másold be egy hasznos helyet. Egy ideiglenes fájl végén a szkript eltávolításra kerül. Tehát, ha szeretné menteni a fájlt, azt kell áthelyezni vagy átnevezni.

    A mi pimere feltételezhető, hogy a letöltött fájlok cikkeket, így meg kell, hogy távolítsa el őket minden lehetséges HTML-címkék és menjünk át egy megfelelő könyvtárba.

    upload.php - PHP-script fogadó fájlt a HTML-űrlapok





    Loading.

    A legtöbb forgatókönyvet az ellenőrzéseket Pieces hibákat. A fájl feltöltése jár a potenciális kockázat a biztonság megsértése, és ezt a kockázatot minimalizálni kell. Meg kell, amennyire csak lehetséges, hogy alaposan ellenőrizze a fájlt, hogy a biztonsága a kijelzőt a látogató.

    Lássuk mik a fő része a script tartalmaz.

    Először ellenőrizze a hibakódot vissza a $ _FILES [ 'userfile'] [ 'error']. Minden hiba kód egy speciális állandó. Lehetséges állandók és azok jelentése az alábbi:

    • UPLOAD_ERROR_OK - 0, ami azt jelenti, hogy nem volt hiba.
    • UPLOAD_ERR_INI_SIZE -ravna 1 azt jelenti, hogy a méret a fájl mérete meghaladja a megadott maximumot a fájlt php.ini up_load_max_filesize irányelvet.
    • UPLOAD_ERR_FORM_SIZE -ravna 2 azt jelenti, hogy a méret a fájl meghaladja a maximális értéket megadott HTML formájú elem MAX_FILE_SIZE.
    • UPLOAD_ERR_PARTIAL -ravna 3, ami azt jelenti, hogy csak egy része a letöltött fájlt.
    • UPLOAD_ERR_NO_FILE -ravna 4, azt jelzi, hogy a fájl nincs betöltve.

    Ezután ellenőrizze a MIME-típus. Ebben az esetben, úgy döntöttünk, hogy csak akkor töltse le a szöveges fájlokat, így MIME-típus a összehasonlítjuk a $ _FILES [ „userfile”] [ „type”] egy sor „text / plain”. Ez csak akkor ellenőrzi a hibákat, és nem ellenőrzi a biztonsággal kapcsolatos. MIME-típus határozza meg a felhasználó böngészőjének kiterjesztésfüggő, majd elküldi a szerver. Mivel ez könnyen át hamis MIME-típus, a támadók is jól kihasználni azt.

    Ezután ellenőrizzük, hogy a fájl valóban töltve, és nem helyi fájl, mint a / etc / passwd. Valamivel később még visszatérünk erre a kérdésre.

    Ha minden jól megy, akkor másolja a fájlt egy könyvtárba szánt rá. Ebben a példában a / feltöltések / -on kívül az interneten fa, és így alkalmas arra, hogy az útjába sodort fájlokat, amelyek később lehetnek benne valahol.

    Aztán feldolgozni a fájlt, törölje az egészet véletlen HTML és PHP-címkék használatával strip_tags () függvény és írd újra a fájlt.

    Végül a tartalmát a fájl megjelenik a felhasználó számára, hogy biztosítsák, hogy a fájl betöltése sikerült.

    Az eredmény a sikeres végrehajtása a script így néz ki:

    Annak ellenőrzésére, a sikeres fájl letöltése, és biztosítják, hogy nem foglalkozik a helyi fájl, mint a / etc / passwd került alkalmazásra funkció move_uploaded_file () és az is használható is_uploaded_file ().

    Firkált boot szkript lehetővé teszi a látogató a rossz szándék, hogy hozzon létre egy ideiglenes fájlt egy bizonyos nevet, és a forgatókönyvet kell kezelni, mint elfoglalt. És mivel sok startup script visszaadja a felhasználó számára, hogy másolja a letöltött fájlt, vagy helyezzük a helyet, ahonnan lehet letölteni, a felhasználók képesek elérni a fájlt olvasásra elérhetővé webszerver. Ezek közül a fájlok lehetnek fájlok bizalmas információkat - például a / etc / passwd vagy PHP forráskód fájlt, amely tartalmazza a jelszót az adatbázis eléréséhez.

    gyakori problémák

    Amikor le fájlokat a szerverre kell vennie néhány fontos pontot.

    • Az előző példában feltételez ellenőrzése felhasználói hozzáférési jogokat. Nem szabad megengedni, hogy fájlok feltöltésére senkinek.
    • Ha engedélyezi a fájlok feltöltése a szerverre ellenőrzése nélkül a hozzáférési jogok vagy a felhasználók, akik nem megbízhatóak, vannak nagyon erős oka aggodalomra a tartalmát ezeket a fájlokat. Töltse le és futtassa a script, hogy káros lehet - az esemény rendkívül kívánatos. Ezért érdemes megnézni nemcsak a típusa és a fájl tartalmát, mint ebben a példában, hanem a nevét. Nagyon jó ötlet -, hogy hozzá a letöltött fájlok „biztonságos” neveket.
    • Ha a gép fut Windows, akkor egészen a fájl helyett \ kell használni \\ / vagy.
    • A fájl neve a felhasználó által megadott, a tárgyalt forgatókönyv tele van a megjelenése különböző problémák. A legnyilvánvalóbb ezek jár azzal a kockázattal jár véletlenül felülírja a már meglévő fájlokat az azonos nevet. A kevésbé nyilvánvaló probléma az, hogy a különböző operációs rendszerek, és még a nyelvi beállításokat használhatják különböző karakterkészletek a fájlneveket. Letöltött fájl nevét, hogy olyan karaktereket tartalmaz, amelyek nem érvényesek a rendszer.
    • Ha problémája van a dob a rendszer, ellenőrizze a php.ini fájlban. Meg kell tartalmaznia upload_tmp_dir direktíva meghatározza azt a könyvtárat, amely az elérni kívánt. Ahhoz, hogy nagy fájlokat tölt le is kell beállítani a memory_limit irányelvet, amely meghatározza a maximális méretet feltöltött fájlokat. Az Apache is vannak konfigurálható timeout, és korlátozza a méret a tranzakció, amely kell figyelni problémák esetén.
    • Beszéljétek