# Kif tevitaw Local File Inclusion f'PHP: LFI u RFI

> Evita Local File Inclusion f'PHP: listi permessi minflok mogħdijiet mit-talba, verifika b'realpath, allow_url_include itfi u open_basedir.

Sors: https://phpsos.de/mt/ratgeber/lfi-rfi/  
Stat: 25/10/2026  
Fornitur: PHP SOS, Għajnuna ta' emerġenza għal PHP u sigurtà tas-server. Għajnuna immedjata fuq WhatsApp: https://wa.me/491736494914?text=Bongu%20PHP%20SOS%2C%20g%C4%A7andna%20b%C5%BConn%20g%C4%A7ajnuna%20bis-server%20tal-PHP%20tag%C4%A7na.%20Kumpanija%3A%20%E2%80%A6%20Websajt%3A%20%E2%80%A6

**Fil-qosor:** Local File Inclusion f'PHP tinħoloq meta `include`, `require` jew funzjonijiet tal-fajls jużaw mogħdija li l-viżitatur jista' jinfluwenza. Is-soluzzjoni sikura hija lista permessa fissa: il-parametru jagħżel biss minn valuri magħrufa, il-mogħdija nnifisha qatt ma tiġi mit-talba. Fuq in-naħa tas-server `allow_url_include=Off`, `open_basedir` u drittijiet restrittivi tal-fajls jikkompletaw il-protezzjoni.

## X'inhi Local File Inclusion f'PHP?

Ħafna applikazzjonijiet eqdem ta' PHP jgħabbu l-paġni skont mudell sempliċi: parametru fl-indirizz jiddetermina liema fajl jiddaħħal. Jekk dan il-parametru jiġi mgħoddi mhux ivverifikat lil `include`, attakkant jista' jitlob fajls oħra fuq is-server. Fl-aħjar każ jaqra fajls ta' konfigurazzjoni b'kredenzjali. Fl-agħar każ iġiegħel lil PHP jesegwixxi kontenut li qabel poġġa x'imkien ieħor, pereżempju f'upload jew f'fajl tal-log.

Għall-maniġment hu importanti: din il-vulnerabbiltà rari tkun fil-qalba tas-CMS, imma l-aktar fi żviluppi proprji, estensjonijiet qodma jew paġni addizzjonali mibnija bil-għaġla. Ma tidhirx fil-ħajja ta' kuljum, għax il-websajt taħdem b'mod normali.

F'**Remote File Inclusion** PHP jgħabbi kodiċi minn indirizz barrani. Dan jippreżupponi li `allow_url_include` ikun attivat. F'verżjonijiet attwali ta' PHP dan l-issettjar huwa mitfi b'mod standard, imma fuq servers qodma jew ikkonfigurati ħażin għadu jinstab.

### Mudelli vulnerabbli tipiċi fil-kodiċi

Fil-periklu huma postijiet fejn valur mit-talba, minn cookies jew mid-database jsir parti minn mogħdija ta' fajl. Eżempji frekwenti huma selettur tal-lingwa li jgħabbi fajl tal-lingwa skont parametru, għażla tal-paġna permezz ta' parametru fl-indirizz, għażla ta' templates jew themes u skripts ta' download għal dokumenti. `.php` imwaħħal fl-aħħar tal-mogħdija ma jipproteġix b'mod affidabbli, għax l-attakkanti jistgħu jaqilbu għal fajls PHP eżistenti.

L-ewwel ħarsa ġenerali tiksbuha b'tiftix għal inklużjonijiet li fihom varjabbli. Iwassal ukoll sejbiet bla ħsara, imma juri fejn għandu jitħares aktar mill-qrib:

```bash
grep -rnE --include='*.php' '(include|require)(_once)?\s*\(?\s*\$' /var/www/projekt \
  | grep -v '/vendor/'
```

Ivverifikaw kull sejba minn fejn ġejja l-varjabbli u jekk viżitatur jistax jinfluwenzaha.

## Il-mudell sikur: lista permessa minflok mogħdija mit-talba

L-aktar protezzjoni affidabbli hija li l-viżitatur jagħżel biss ċavetta u l-applikazzjoni stess tiddeċiedi liema fajl jappartjeni għaliha. Il-mogħdija qatt ma tinbena minn inputs.

```php
<?php
declare(strict_types=1);

$seiten = [
    'start'      => __DIR__ . '/../vorlagen/start.php',
    'leistungen' => __DIR__ . '/../vorlagen/leistungen.php',
    'kontakt'    => __DIR__ . '/../vorlagen/kontakt.php',
];

$wahl = is_string($_GET['seite'] ?? null) ? $_GET['seite'] : 'start';

if (!array_key_exists($wahl, $seiten)) {
    http_response_code(404);
    $wahl = 'start';
}

require $seiten[$wahl];
```

Dan il-mudell huwa qasir, faċli biex jiġi vverifikat u ma jħalli l-ebda spazju. Fi frameworks moderni r-router jieħu din il-kompitu; hemmhekk ukoll il-kontrollers u t-templates m'għandhomx qatt jiġu ddeterminati minn parametri ħielsa.

## Meta l-ismijiet tal-fajls jridu jkunu dinamiċi: realpath u direttorju bażiku

Kultant lista fissa mhix prattika, pereżempju f'downloads minn folder tad-dokumenti. Allura ivverifikaw il-mogħdija solvuta kontra direttorju bażiku fiss u ippermettu biss ismijiet sempliċi ta' fajls.

```php
<?php
declare(strict_types=1);

const BASIS = '/var/www/daten/dokumente';

function sichererPfad(string $name): string
{
    if (!preg_match('/^[a-z0-9_-]{1,64}\.pdf$/', $name)) {
        throw new InvalidArgumentException('Ungültiger Dateiname.');
    }

    $basis = realpath(BASIS);
    $pfad  = realpath($basis . DIRECTORY_SEPARATOR . $name);

    if ($basis === false || $pfad === false
        || !str_starts_with($pfad, $basis . DIRECTORY_SEPARATOR)) {
        throw new RuntimeException('Datei nicht gefunden.');
    }

    return $pfad;
}

// Ikkunsinjaw minflok ma tinkludu: readfile() ma jesegwix l-ebda kodiċi.
$datei = sichererPfad((string) ($_GET['datei'] ?? ''));
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="' . basename($datei) . '"');
readfile($datei);
```

Żewġ punti huma deċiżivi. L-espressjoni regolari ma tippermetti l-ebda separaturi tad-direttorji u l-ebda karattri speċjali. U l-fajls li għandhom jiġu biss ikkunsinjati jinqraw b'`readfile()`, mhux b'`include`, biex kodiċi li jinsab fihom qatt ma jiġi eżegwit. `str_starts_with()` hija disponibbli minn PHP 8.0.

## Protezzjoni fuq in-naħa tas-server: php.ini, open_basedir u drittijiet

Kodiċi sikur huwa l-ewwel linja ta' difiża. Il-konfigurazzjoni tas-server tiżgura li żball li ma ġiex innotat jagħmel inqas ħsara.

```ini
; php.ini jew pool FPM (php_admin_value / php_admin_flag)
allow_url_include = Off
allow_url_fopen   = Off   ; biss jekk l-applikazzjoni ma tgħabbix URLs esterni
open_basedir      = /var/www/kunde-a/:/tmp/kunde-a/
display_errors    = Off
log_errors        = On
```

`allow_url_fopen` ċerti applikazzjonijiet jeħtiġuh għal aġġornamenti jew interfaces. Ittestjaw it-tifi l-ewwel f'ambjent tat-test. `open_basedir` jillimita lil PHP għad-direttorji proprji tal-websajt, li huwa speċjalment importanti fuq servers b'diversi klijenti. Dettalji jinsabu fil-gwidi [open_basedir u iżolament għal kull websajt](https://phpsos.de/mt/ratgeber/open-basedir/) u [Kif tikkonfiguraw php.ini b'mod sikur](https://phpsos.de/mt/ratgeber/php-ini-sicher-konfigurieren/).

Barra minn hekk, id-direttorji tal-upload u tal-cache m'għandhomx ikunu eżegwibbli u l-fajls tal-log m'għandhomx jinsabu fil-webroot. B'hekk l-attakkant jitlef il-postijiet fejn seta' jpoġġi kontenut proprju għall-inklużjoni.

## Kif tagħrfu tentattivi ta' sfruttament fil-logs

Tentattivi biex file inclusion tiġi sfruttata ġeneralment iħallu traċċi fil-log tal-aċċess. Jolqtu l-għajn parametri li fihom bidliet tad-direttorju, mogħdijiet assoluti tas-sistema, stream wrappers jew indirizzi barranin sħaħ, speċjalment f'parametri bħal `page`, `file`, `template` jew `lang`. Sejba waħda ġeneralment hija scanning awtomatizzat. Importanti hu jekk talba bħal din ġietx imwieġba bil-kodiċi ta' stat 200 u b'daqs mhux tas-soltu tat-tweġiba.

Kif tipproċedu b'mod sistematiku jiddeskrivi [Kif tevalwaw il-logs tas-server wara attakk](https://phpsos.de/mt/ratgeber/logfiles-auswerten/). Jekk issibu indikazzjonijiet ta' aċċessi b'suċċess, ippreżumu li l-fajls ta' konfigurazzjoni nqraw u ġeddu l-kredenzjali li jinsabu fihom.

Dan jinkludi fuq kollox il-passwords tad-database, iċ-ċwievet għas-servizzi tal-ħlas u tal-ispedizzjoni, l-aċċessi SMTP u ċ-ċwievet sigrieti tas-CMS. Ivverifikaw ukoll jekk mill-ewwel aċċess suspettuż inħolqu fajls ġodda. Min seta' jaqra fajls, forsi pprova wkoll jpoġġi tiegħu. F'dan il-każ mhuwiex biss kwistjoni ta' vulnerabbiltà fil-kodiċi, imma ta' inċident tas-sigurtà li għandu jiġi ttrattat b'mod strutturat.

### Assiguraw il-korrezzjonijiet b'mod dejjiemi

Wara korrezzjoni jixraq li l-funzjoni ta' protezzjoni tiġi assigurata b'testijiet awtomatizzati. Test sempliċi jgħaddi lill-għażla tal-paġna valuri mhux magħrufa, bidliet tad-direttorju u inputs vojta u jistenna fil-każijiet kollha l-paġna standard jew żball 404. Testijiet bħal dawn jipprevjenu li bidla aktar tard terġa' tiftaħ il-vulnerabbiltà mingħajr ma tiġi nnotata.

Għall-maniġment u r-responsabbli tal-proġetti tgħin mistoqsija lill-aġenzija: Hemm fl-applikazzjoni postijiet fejn il-fajls jitgħabbew skont parametri, u kif huma assigurati? Tweġiba konkreta b'postijiet misjuba u testijiet hija sinjal tajjeb.

## Kif tgħin PHP SOS b'mod konkret?

- Infittxu fil-kodiċi tagħkom b'mod immirat għal `include`, `require` u funzjonijiet tal-fajls b'inputs mit-talba u nevalwaw kull sejba.
- Niffissaw `allow_url_include`, `open_basedir` u drittijiet xierqa għal kull websajt u nivverifikaw li l-applikazzjoni tkompli taħdem wara.
- Nevalwaw il-logs għal tentattivi ta' sfruttament u niċċaraw jekk il-kredenzjali jridux jiġu mġedda.
- Għal verifika indipendenti noffru [awdit tas-sigurtà b'test ta' penetrazzjoni](https://phpsos.de/mt/leistungen/sicherheitsaudit-penetrationstest/) għal applikazzjonijiet ta' PHP.


## Mistoqsijiet frekwenti

**X'inhi d-differenza bejn LFI u RFI?**  
F'Local File Inclusion l-applikazzjoni tgħabbi fajl li diġà jinsab fuq is-server, imma li ma kellux jitgħabba. F'Remote File Inclusion jitgħabba kodiċi minn indirizz barrani. RFI jippreżupponi issettjar mhux sikur ta' PHP, LFI le.

**Huwa biżżejjed li neħħi ../ mill-parametru?**  
Le. Filtri bħal dawn spiss jistgħu jiġu evitati b'kodifika jew varjanti u ma jaqbdux mogħdijiet assoluti. Sikura hija biss assenjazzjoni fissa ta' valuri permessi għal fajls jew verifika tal-mogħdija solvuta kontra direttorju bażiku.

**open_basedir jipproteġi għal kollox minn file inclusion?**  
Le, jillimita biss id-direttorji li PHP jista' jaċċessa. Ġewwa dawn il-limiti vulnerabbiltà tibqa' tista' tiġi sfruttata. open_basedir huwa saff addizzjonali ta' protezzjoni u ma jissostitwixxix kodiċi sikur.

**CMS bħal WordPress huma affettwati minn LFI?**  
Il-qalba tas-CMS komuni titqies f'dan il-punt bħala verifikata tajjeb. Vulnerabbiltajiet jidhru aktar fl-estensjonijiet, fit-themes u fi żviluppi proprji. Aġġornamenti tal-estensjonijiet u ħarsa lejn l-avviżi tas-sigurtà tagħhom huma għalhekk importanti.

## Sorsi

- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [BSI IT-Grundschutz](https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Standards-und-Zertifizierung/IT-Grundschutz/it-grundschutz_node.html)
