Ce face stream_is_local
stream_is_local primește un stream deschis sau o adresă ca text. Returnează true pentru fișiere, php://memory, socket-uri locale, și false pentru wrapperele de rețea precum http:// și ftp://.
Este utilă când primești o cale de la utilizator și vrei să refuzi adresele web, de exemplu ca serverul să nu poată fi folosit pentru cereri către alte site-uri.
Parametri
| Parametru | Descriere |
|---|---|
$stream |
Un stream deschis sau o adresă (text). |
Ce returnează
true dacă este local, false dacă este la distanță.
Exemple
Exemplul 1: Stream-uri și adrese
<?php
$f = fopen("nota.txt", "w");
var_dump(stream_is_local($f));
var_dump(stream_is_local(fopen("php://memory", "r")));
var_dump(stream_is_local("poze/vacanta.jpg"));
var_dump(stream_is_local("https://www.exemplu.ro/poza.jpg"));
Rezultat
bool(true)
bool(true)
bool(true)
bool(false)
Exemplul 2: Refuză adresele web
<?php
function citeste_sablon(string $cale): string
{
if (!stream_is_local($cale)) {
return "Refuzat: $cale";
}
return "Citesc $cale";
}
echo citeste_sablon("sabloane/factura.html") . "\n";
echo citeste_sablon("http://atacator.exemplu/cod.php") . "\n";
Rezultat
Citesc sabloane/factura.html
Refuzat: http://atacator.exemplu/cod.php
Greșeli frecvente
- Consideri că o cale locală este automat sigură.
stream_is_localnu oprește../. Verifică și calea curealpath.
Comenzi înrudite
stream_get_wrappers: Returnează lista protocoalelor pe care funcțiile de fișier le înțeleg (file, http, https, php, data, phar…).realpath: Transformă o cale relativă într-o cale absolută, fără ../ și fără scurtături.fopen / fclose: Deschide un fișier pentru citire sau scriere și returnează o resursă; fclose îl închide.