Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Ladik 08. 12. 2012, 14:35:53
-
Ahoj,
v PHP bych potřeboval regulární výraz pro ověření platného názvu souboru při uložení na server (nesmí začínat tečkou a končit .php nebo .phtml nebo .php3 - případně můžete rozšířit o další "nebezpečné" přípony).
Prozatím to mám takto "@^[^\.][a-zA-Z0-9\-\.]+$@i", ale nevím jak v jenom výrazu najednou zapsat podmínku, že nesmí končit určitými řetězci. Děkuji za odpověď.
-
Pojmenuj si ukládaný soubor syntetickým názvem (např MD5 obsahu) a skutečný název dej do databáze s odkazem na soubor.
-
A adresáři, kam nahráváš soubory, nastav třeba přes .htaccess
php_flag engine off
-
Pojmenuj si ukládaný soubor syntetickým názvem (např MD5 obsahu) a skutečný název dej do databáze s odkazem na soubor.
Při každém přístupu k souboru by se ale muselo z DB načíst, co je to za soubor a to by zbytečně zatežovalo server - když si např. představím, že to bude nějaká fotogalerie a kvůli každému obrázku sahat extra do DB by nebylo vhodné. Lepší je jednou ošetřit při uložení než pokaždé při načtení. Přinejhorším si mohu napsat funkci, která bude zakázané přípony testovat, ale všechny vstupní parametry testuji pomocí reg. výrazů, tak jsem to chtěl mít jednotné.
-
A adresáři, kam nahráváš soubory, nastav třeba přes .htaccess php_flag engine off
Ano, to je ideální a lokálně mi to funguje, na serveru je možnost php_flag engine off zakázaná, resp. se PHP soubory zpracují jako obvykle.
-
A adresáři, kam nahráváš soubory, nastav třeba přes .htaccess php_flag engine off
To bude zajímavé, až mu tam někdo nahraje svůj .htaccess :-)
-
A adresáři, kam nahráváš soubory, nastav třeba přes .htaccess php_flag engine off
To bude zajímavé, až mu tam někdo nahraje svůj .htaccess :-)
Nenahraje - viz. jak jsem psal v původním dotazu "nesmí začínat tečkou".
-
Lepsi je testovat na povolene nazvy, treba pro zminovanou galerii: ^.*[.](jpg|jpeg|gif|png)$ a s tim pak nemusis resit zda to zacina teckou nebo nebo to ma nebezpecnou priponu..
-
Ahoj,
v PHP bych potřeboval regulární výraz pro ověření platného názvu souboru při uložení na server (nesmí začínat tečkou a končit .php nebo .phtml nebo .php3 - případně můžete rozšířit o další "nebezpečné" přípony).
Neřeším, jak moc je to rozumný přístup - já bych třeba určitě šel cestou whitelistu, ne blacklistu. Ale můžeš to napsat takhle (navíc jsem ti přidal podmínku, že nesmí obsahovat tečku za lomítkem, protože jinak ti "nezačíná tečkou" nijak zvlášť nepomůže):
~^(?!\.)[^/]+(?:/(?!\.)[^/]+)*(?<!\.php)(?<!\.phtml)(?<!\.php3)$~i
-
Ahoj,
v PHP bych potřeboval regulární výraz pro ověření platného názvu souboru při uložení na server (nesmí začínat tečkou a končit .php nebo .phtml nebo .php3 - případně můžete rozšířit o další "nebezpečné" přípony).
Neřeším, jak moc je to rozumný přístup - já bych třeba určitě šel cestou whitelistu, ne blacklistu. Ale můžeš to napsat takhle (navíc jsem ti přidal podmínku, že nesmí obsahovat tečku za lomítkem, protože jinak ti "nezačíná tečkou" nijak zvlášť nepomůže):
~^(?!\.)[^/]+(?:/(?!\.)[^/]+)*(?<!\.php)(?<!\.phtml)(?<!\.php3)$~i
Děkuji moc, před touto regulární kontrolou probíhá převod názvu souboru na znaky v rozmezí a-z0-9 a jiné povolené znaky jsou už jen pomlčka a tečka a cokoli jiného se převádí na pomlčku. Nedokáži určit, jaké soubory se budou nahrávat (teoreticky může jít i o nějaké specifické přípony), tak proto blacklist.