# Fájlfeltöltés biztonsága

> Feltöltési korlátozások, a feltöltési mappa védelme, letöltési hivatkozások, útvonal módosítása, .htaccess és a szerveren kívüli tárolás lehetőségei.

Ez a fejezet a **Fájlfeltöltés** mező biztonsági szempontjait foglalja össze: ki tölthet fel fájlt, hol tárolódik, ki tudja letölteni, és milyen alternatívák vannak a saját szerveren való tárolás helyett. A mezőről magáról a [Fájlfeltöltés](https://hub.hellowp.io/hu/plugins/gravityforms/halado-mezok-fajlfeltoltes/) fejezetben olvashatsz.

## Feltöltés csak bejelentkezett felhasználóknak

Fájl csak akkor kerülhet a szerverre, ha egy aktív űrlapon van **Fájlfeltöltés** mező. Ha egyetlen aktív űrlapon sincs ilyen mező, nem tölthető fel fájl.

Ha lehet, állítsd be az űrlapnál, hogy bejelentkezés kell hozzá. Így csak hitelesített felhasználók tölthetnek fel fájlt. Ha a bejelentkezés nem megoldható, olvasd végig a fejezet többi részét.

## Engedélyezett kiterjesztések

A mező felvételekor a lehető legszigorúbb kiterjesztéslistát add meg. A Gravity Forms bizonyos kiterjesztéseket mindig letilt a támadások ellen, de érdemes csak azokra a fájltípusokra szűkíteni, amelyeket valóban vársz.

## A Gravity Forms feltöltési mappája

A Gravity Forms almappa-szerkezetet hoz létre a WordPress feltöltési gyökerében. A mappák egyedi nevet kapnak, ugyanazzal az eljárással (sózott HMAC-MD5), amelyet a WordPress használ, hogy nehéz legyen nyers erővel kitalálni őket. Egy űrlap fájljainak mappája így néz ki:

```
/path/to/wordpress/wp-content/uploads/gravity_forms/82-ea1cf844318d032fd7e8fa8w1dacdfbe
```

Minden almappába üres `index.html` fájl kerül, hogy a rosszul beállított webszervereken ne jelenjen meg a könyvtárlista a keresőkben. Ezeket a fájlokat ne töröld.

## Összefűző címkék és fájlcímek

A fájlok addig biztonságban vannak, amíg az űrlap mappájának neve nem kerül nyilvánosságra. A rendszergazdáknak küldött értesítésekben használhatsz fájlfeltöltés-összefűző címkét. Ha a fájlok bizalmasak, ne használd ezeket a címkéket a megerősítésekben, és a nem rendszergazda címzetteknek szóló értesítésekben.

## Biztonságos letöltési helyek

Alapból a fájlok letöltési címei elrejtik a fájl szerveren lévő helyét, így a hivatkozásból nem derül ki az elérési út. Ezt nem ajánlott kikapcsolni.

A letöltéshez való hozzáférést három szűrő szabályozza:

| Szűrő | Mire jó |
|---|---|
| `gform_require_login_pre_download` | A letöltési cím csak bejelentkezett felhasználónak ad hozzáférést a fájlhoz. |
| `gform_permission_granted_pre_download` | Egyéni logikát futtat (például jogosultság-ellenőrzést), és ez dönti el, hogy a cím hozzáférést ad-e. Jó példa: a letöltés korlátozása a beküldés készítőjére. |
| `gform_secure_file_download_location` | Kikapcsolja a biztonságos letöltési helyeket. Nem ajánlott. |

A fájlfeltöltési mezők többi szűrője a fejlesztői hivatkozásokban található.

## A feltöltési útvonal módosítása

A nagyobb biztonság érdekében a feltöltött fájlokat másik helyre is teheted a szerveren a `gform_upload_path` szűrővel. Ilyenkor ügyelj rá, hogy a webszervernek legyen olvasási és írási joga az új mappához. A fájlokat teljesen másik szerverre is áthelyezheted a `gform_after_submission` kapcsolóponttal.

## Az .htaccess fájl

A Gravity Forms feltöltési mappájának gyökerében egy `.htaccess` fájl jön létre, amely a legtöbb szerveren megakadályozza, hogy a PHP-t futtassák az almappákban. A fájl a leggyakoribb szerverbeállításokra készül, ezért néha módosítani kell a `gform_upload_root_htaccess_rules` szűrővel. Ha egyáltalán nem szeretnéd, hogy a fájl létrejöjjön:

```php
add_filter( 'gform_upload_root_htaccess_rules', '__return_false' );
```

Ezt csak akkor használd, ha hibát látsz. Az `.htaccess` fájl a szervered védelmét szolgálja, ezért előbb kérdezd meg a szerver üzemeltetőjét, vagy fordulj a támogatáshoz.

## A Fájlfeltöltés mező eltávolítása a szerkesztőből

A Gravity Forms minden olyan felhasználónak engedi a **Fájlfeltöltés** mező felvételét, aki szerkesztheti az űrlapokat. Ha ki akarod venni a mezőt a mezőkönyvtárból, használd a `gform_add_field_buttons` szűrőt.

## Fájlok tárolása a szerveren kívül

Ha a feltöltött fájlok szerveren tartása nem megfelelő, több lehetőség van.

**Dropbox kiegészítő.** A feltöltött fájlokat közvetlenül a Dropboxba küldheti, a szerveren tárolás helyett vagy mellett. Beküldéskor a fájl először a szerverre kerül, és a beküldés a helyi fájlra mutat. A kiegészítő ezután aszinkron módon, feeden keresztül tölti át a fájlt. Ha az átvitel megerősítést nyert, a beküldésben a cím a Dropboxban lévő fájlra változik, a helyi fájl pedig törlődik.

Az aszinkron feldolgozás akár percekig is tarthat. Ha a háttérfeldolgozás elromlik vagy leáll, a feed soha nem fut le, és a fájl a szerveren marad. Megosztott tárhelyen vagy megfelelő tanúsítvány nélküli szervereken ez biztonsági figyelmeztetés.

Ha a szerveren való tárolást teljesen el akarod kerülni, használd a Dropbox egyéni alkalmazás kapcsolatot: a fájl az ügyfeled Dropbox-fiókjából közvetlenül a te Dropbox-fiókodba kerül, a szervered érintése nélkül.

**Külső integráció.** Például a Zapier segítségével a fájlokat Google Drive-ra vagy más felhőtárhelyre irányíthatod, az eredetiket pedig az átvitel után automatikusan törölheted a webszerverről.
