# Uaslódálacha comhad i PHP a chur i bhfeidhm go slán: slándáil uaslódála PHP

> Slándáil uaslódála PHP: cineál comhaid a sheiceáil ar an bhfreastalaí, comhaid a athainmniú, iad a stóráil lasmuigh den fhréamhchomhadlann ghréasáin.

Foinse: https://phpsos.de/ga/ratgeber/datei-upload-sicher/  
Staid: 25/10/2026  
Soláthraí: PHP SOS, Cabhair éigeandála PHP agus slándáil freastalaí. Cabhair láithreach trí WhatsApp: https://wa.me/491736494914?text=Dia%20duit%2C%20a%20PHP%20SOS%2C%20t%C3%A1%20cabhair%20de%20dh%C3%ADth%20orainn%20len%C3%A1r%20bhfreastala%C3%AD%20PHP.%20Cuideachta%3A%20%E2%80%A6%20Su%C3%ADomh%20gr%C3%A9as%C3%A1in%3A%20%E2%80%A6

**Go achomair:** I slándáil uaslódála PHP ní seiceáil amháin a chinneann an toradh, ach an teaglaim: cineál comhaid a sheiceáil ar thaobh an fhreastalaí, comhaid a athainmniú, iad a chur lasmuigh den fhréamhchomhadlann ghréasáin agus gan rith scripte a cheadú san fhillteán uaslódála. Is ceann de na bealaí clasaiceacha é foirm uaslódála gan seiceáil trína dtugann ionsaitheoirí cúldoras ar fhreastalaí gréasáin.

## Cén fáth a bhfuil foirmeacha uaslódála ina bpointe iontrála is fearr leat

Scríobhann gach foirm a ghlacann le comhaid sonraí coimhthíocha ar do fhreastalaí. Orthu sin tá foirmeacha iarratais, tairseacha cliant, gailearaithe íomhánna, réimsí tacaíochta agus a lán eisínteachtaí do CMS agus siopaí. Má éiríonn le hionsaitheoir comhad a chur ansin a ritheann an freastalaí gréasáin ina dhiaidh sin mar PHP, tá cúldoras buan aige.

Don bhainistíocht ciallaíonn sé seo: d'fhéadfadh uaslódáil a bhfuil cuma neamhdhíobhálach uirthi d'achoimrí saoil, sa chás is measa, cur le tógáil an fhreastalaí gréasáin ar fad. Ina theannta sin bíonn sonraí pearsanta i bhfillteáin uaslódála go minic a bhíonn inrochtana go poiblí le cumraíocht mhícheart.

Do riarthóirí agus forbróirí ciallaíonn sé: caithfidh cód feidhmchláir agus cumraíocht an fhreastalaí teacht le chéile. Is minic a ghabhann leibhéal amháin laige ar leibhéal eile, nuair a chuirtear an dá cheann i bhfeidhm go glan. Conas a aimsíonn tú comhaid a cuireadh isteach cheana, déanann an treoir [Webshells a aithint agus a bhaint](https://phpsos.de/ga/ratgeber/webshell-erkennen/) cur síos air.

## Na bunrialacha do shlándáil uaslódála PHP

Tagann na rialacha seo a leanas leis na moltaí ó OWASP Cheat Sheets agus tá siad cruthaithe san oibríocht:

- **Liosta ceadaithe seachas liosta toirmiscthe:** Ná glac ach le cineálacha comhad atá ceadaithe go sainráite, mar shampla PDF, JPG agus PNG. Is féidir liostaí toirmiscthe d'iarmhíreanna aonair a sheachaint trí leaganacha agus iarmhíreanna dúbailte.
- **An t-inneachar a sheiceáil, ní an iarmhír amháin:** An fíorchineál a fháil ar thaobh an fhreastalaí le `finfo`. Is sonra ón seoltóir é an cineál MIME i `$_FILES` agus níl sé iontaofa.
- **Ainm nua comhaid:** Ná húsáid an bunainm mar ainm comhaid riamh. Gin ainm randamach agus cuir an iarmhír ón liosta ceadaithe leis.
- **Stóráil lasmuigh den fhréamhchomhadlann ghréasáin:** Stóráil comhaid ionas nach bhfuil siad inrochtana go díreach trí URL. Seachadtar trí script le seiceáil údaráis.
- **Méid a theorannú:** San fheidhmchlár, i PHP agus san fhreastalaí gréasáin.
- **Gan rith:** Má chaithfidh uaslódálacha a bheith sa fhréamhchomhadlann ghréasáin ar aon nós, múch rith scripte sa chomhadlann sin.
- **Seiceáil ar an bhfreastalaí amháin:** Feabhsaíonn seiceálacha JavaScript sa bhrabhsálaí an úsáid, ach ní chosnaíonn siad.

## Sampla slán le finfo agus ainm randamach

Léiríonn an sampla seo a leanas croílár próiseála slána. Tá sé gearr d'aon turas agus ní mór é a leabú i d'fheidhmchlár, is é sin le logáil isteach, seiceáil údaráis, cosaint CSRF agus logáil.

```php
<?php
declare(strict_types=1);

const MAX_BYTES  = 5 * 1024 * 1024; // 5 MB
const ERLAUBT    = [
    'application/pdf' => 'pdf',
    'image/jpeg'      => 'jpg',
    'image/png'       => 'png',
];
const ZIELORDNER = '/var/www/daten/uploads'; // lasmuigh den fhréamhchomhadlann ghréasáin

$datei = $_FILES['dokument'] ?? null;

if (!is_array($datei) || $datei['error'] !== UPLOAD_ERR_OK) {
    http_response_code(400);
    exit('Upload fehlgeschlagen.');
}

if ($datei['size'] > MAX_BYTES || !is_uploaded_file($datei['tmp_name'])) {
    http_response_code(400);
    exit('Datei ungültig.');
}

$finfo = new finfo(FILEINFO_MIME_TYPE);
$typ   = $finfo->file($datei['tmp_name']);

if (!isset(ERLAUBT[$typ])) {
    http_response_code(415);
    exit('Dateityp nicht erlaubt.');
}

$name = bin2hex(random_bytes(16)) . '.' . ERLAUBT[$typ];
$ziel = ZIELORDNER . '/' . $name;

if (!move_uploaded_file($datei['tmp_name'], $ziel)) {
    http_response_code(500);
    exit('Speichern fehlgeschlagen.');
}

chmod($ziel, 0640);
// Stóráil an bunainm mar théacs amháin sa bhunachar sonraí
// agus escape é le htmlspecialchars() le gach aschur.
```

I gcás íomhánna is fiú céim bhreise: an íomhá a ionchódú as an nua le GD nó Imagick agus na meiteashonraí a chaitheamh amach. Ní chuireann sé sin na seiceálacha eile ina n-ionad, ach laghdaíonn sé an riosca iarmharach de bharr sonraí coimhthíocha leabaithe.

Do dhoiciméid ó fhoinsí anaithnide, mar shampla iarratais nó grianghraif gearán, tá scanadh víreas sula dtugtar ar aghaidh ciallmhar freisin. Cosnaíonn sé níos lú an freastalaí gréasáin ná na fostaithe a osclaíonn na comhaid níos déanaí ar a ríomhairí oibre. Logáil gach uaslódáil freisin le hamanna, cuntas, méid comhaid agus cineál aitheanta, ionas gur féidir patrúin neamhghnácha a rianú níos déanaí.

I gcás CMS agus siopaí, bíonn seiceálacha dá gcuid féin de ghnáth sna leabharlanna meán ionsuite. Tá foirmeacha eisínteachta, feidhmeanna iompórtála agus leathanaigh bhreise a ríomhchláraítear leat féin níos riosca, a stórálann comhaid tharla an leabharlann. Ba cheart duit na háiteanna sin a fheiceáil ar dtús le linn seiceála.

> **Leid:**
> Seachadaigh comhaid ón bhfillteán cosanta le `Content-Disposition: attachment` agus `X-Content-Type-Options: nosniff`. Ansin ní thaispeánann an brabhsálaí inneachar fadhbach go díreach, ach tairgeann sé mar íoslódáil é.

## Rith PHP a mhúchadh san fhillteán uaslódála

Fiú má shleamhnaíonn comhad le hinneachar mícheart tríd, ní cheadaítear don fhreastalaí gréasáin é a rith mar script. Baineann an dara sraith chosanta seo le gach freastalaí a stórálann uaslódálacha sa fhréamhchomhadlann ghréasáin.

Do Nginx le PHP-FPM:

```nginx
location ^~ /uploads/ {
    location ~* \.(php|phtml|phar)$ {
        deny all;
    }
}
```

Do Apache, is fearr go díreach sa VirtualHost seachas i `.htaccess`, ionas nach féidir leis an bhfeidhmchlár an riail a fhorscríobh:

```apache
<Directory "/var/www/html/uploads">
    AllowOverride None
    <FilesMatch "\.(php|phtml|phar)$">
        Require all denied
    </FilesMatch>
</Directory>
```

Má ritheann PHP mar mhodúl Apache (mod_php), is féidir leat `php_admin_flag engine off` a shocrú ina theannta sin sa bhloc céanna. Tar éis an athraithe, seiceáil le comhad tástála neamhdhíobhálach nach n-aschuireann ach téacs go bhfreagraíonn an freastalaí iarratas air le 403.

## Teorainneacha méide agus an nasc le PHP2Shell

Tá uaslódálacha dlúthbhaineach leis na socruithe PHP `post_max_size` agus `upload_max_filesize`. I gcomhthéacs PHP2Shell molann php.net mar bheart idirthréimhseach `post_max_size` a shocrú ar 8M mura bhfuil uaslódálacha ag teastáil, nó ar 32M le huaslódálacha, agus `upload_max_filesize` a choinneáil faoina bhun. Ní cosaint iomlán é sin agus ní chuireann sé an nuashonrú go leagan ceartaithe PHP ina ionad.

```ini
; php.ini nó linn FPM (php_admin_value), ansin gach oibrí a atosú
file_uploads        = On
post_max_size       = 32M
upload_max_filesize = 20M
max_file_uploads    = 5
```

Mura bhfuil uaslódálacha ag teastáil ó shuíomh gréasáin ar chor ar bith, is é `file_uploads = Off` an réiteach is glaine. Cé na socruithe atá ciallmhar go dtí an paiste, tá sé ag [Bearta láithreacha gan paiste](https://phpsos.de/ga/php2shell/sofortmassnahmen-ohne-patch/). Cearta oiriúnacha do chomhadlanna uaslódála, déanann [Cearta comhad ar an bhfreastalaí gréasáin](https://phpsos.de/ga/ratgeber/dateirechte-webserver/) cur síos orthu.

## Earráidí tipiciúla i bhfeidhmeanna uaslódála

Agus feidhmchláir atá ann cheana á scrúdú, tagann na patrúin chéanna chun cinn arís agus arís eile. Seiceáil do fhoirmeacha go sonrach i gcomhair na bpointí seo:

- Ní sheiceáiltear an iarmhír ach go páirteach, ionas go sleamhnaíonn ainmneacha comhad le roinnt iarmhíreanna tríd.
- Críochnaíonn an bunainm ón bhfoirm sa chosán stórála. Osclaíonn sé sin bealaí d'ionramháil cosán agus do chomhaid atá ann cheana a fhorscríobh.
- Tá uaslódálacha poiblí le hainmneacha intuartha. I gcás iarratas nó conarthaí is fadhb cosanta sonraí é sin freisin.
- Tá an fillteán uaslódála inscríofa don fhreastalaí gréasáin agus inrite ag an am céanna.
- Ní nuashonraítear seaneisínteachtaí uaslódála ná breiseáin foirme, cé gur fhoilsigh an monaróir nuashonruithe slándála.
- Ní logáiltear earráidí. Is comhartha luath d'iarrachtaí spriocdhírithe iad uaslódálacha diúltaithe.

## Conas a chabhraíonn PHP SOS go nithiúil?

- Seiceálaimid do fheidhmeanna uaslódála sa chód agus i gcumraíocht an fhreastalaí agus ainmnímid laigí nithiúla le tosaíocht.
- Socraímid an glas rite san fhillteán uaslódála, cearta oiriúnacha agus teorainneacha méide mar chuid den [chruatú freastalaí](https://phpsos.de/ga/leistungen/server-haertung/).
- Má tá amhras ann, cuardaímid comhadlanna uaslódála le haghaidh scripteanna a cuireadh isteach agus glanaimid iad trínár [mbaint malware](https://phpsos.de/ga/leistungen/malware-entfernung/).
- Ar iarratas, déanaimid an cur i bhfeidhm a chros-seiceáil go neamhspleách le [tástáil threáite](https://phpsos.de/ga/leistungen/sicherheitsaudit-penetrationstest/).


## Ceisteanna coitianta

**An leor iarmhír an chomhaid a sheiceáil le linn uaslódála?**  
Ní leor. Is ón seoltóir a thagann an iarmhír agus an cineál MIME a thuairiscíonn an brabhsálaí agus is féidir iad a roghnú go saor. Seiceáil an t-inneachar ar thaobh an fhreastalaí, tabhair ainm nua comhaid agus cuir rith scripte faoi ghlas sa chomhadlann uaslódála.

**Cá háit ar cheart comhaid uaslódáilte a stóráil?**  
Is fearr lasmuigh den chomhadlann ghréasáin phoiblí. Ansin glacann script an seachadadh air féin, a sheiceálann roimh ré an bhfuil cead ag an úsáideoir an comhad a fheiceáil. Ar an gcaoi sin ní féidir comhaid a ghlaoch go díreach ná a rith.

**An bhfuil comhaid SVG mar íomhánna neamhdhíobhálach?**  
Ní go huathoibríoch. Is XML é SVG agus féadann inneachar gníomhach a bheith ann. Ná ceadaigh SVG ach má ghlanann tú na comhaid nó má sheachadann tú iad mar íoslódáil amháin le ceanntásc Content-Disposition oiriúnach.

**An bhfuil baint ag méid uaslódála le PHP2Shell?**  
Tá, go hindíreach. Molann php.net luachanna níos ísle do post_max_size agus upload_max_filesize mar bheart idirthréimhseach. Laghdaíonn sé sin an riosca, ach ní chuireann sé an nuashonrú go leagan ceartaithe PHP ná atosú gach oibrí ina ionad.

## Foinsí

- [OWASP Cheat Sheet Series (File Upload)](https://cheatsheetseries.owasp.org/)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [php.net: tuarascálacha slándála maidir le PHP2Shell](https://www.php.net/)
