bezpecne vkladani souboru

jak bezpecne vkladat soubry?

vzdycky jsem je vkladal pres include, pak jsem si precet ze je bezpecnejsi require_once();. a nedavno jsem zase cet ze to taky tak idealni neni.

takze co mam pouzivat?
chci vkladat jen soubor, kde mam ulozeny vlastni funkce
Na to je imho nejvhodnější ono require_once - zajistí to právě jedno vložení.
tady se snad nejedna o to , kolikrat se vlozi soubor ale co je nejbezpecnejsi.

REQUIRE -- pokud nenalezne to co ma vlozit vypise error a stranka nepokracuje, coz je nekdy vhodne

INCLUDE - taky error, ale pokracuje dal ve vykresleni stranky


Nicmene bych rekl ze nejbezpecnejsi je si to poradne osetrit, aby utocnik nemohl modifikovat zadnym zpusobem URL ... pokud vkladate stranky stylem ?page=NECO
ne pres promenou je nevkladam(takze by imho melo byt uhodnuti stranky znemozneno), navic jsou to vsechno *.php soubory(takze dokud budou na serveru tak by se nikdo krome me nemel dostat ke zdrojaku), ale nahoda je blbec a ja jsem v bezpecnosti stranek na urovni lamy:(((

nejhorsi na tom je, ze loguju chyby do *.txt souboru, kde se za nepriznive konstelace hvezd muze objevit kompletni mapa mejch stranek(no nic, asi to dam taky do *.php)

a abych uved priklad vkladani vypada takto:
<?php
require_once "soubor.php";
?>

jak moc je tohle nebezpecny?
spook: No, to zalezi na tom, co includujes. Jinak to neni vubec nebezpecne.
Spook říká, že tam má vlastní funkce. Asi je bude potřebovat, takže je spravné, aby v případě neúspěšného vložení skript skončil s chybou, tedy require. Stejně tak není dobré deklarovat funkce 2x, protože by to vedlo k chybě, tedy hodí se require_once.
Co se bezpečnosti týče - jestliže inkludovaný soubor.php obsahuje jenom funkce, tak když ho uživatel otevře rovnou (zadá jeho url), tak uvidí jenom prázdnou stránku. Jestli to nestačí, tak je možnost dát inkludované soubory do zvláštního adresáře, do kterého se pomocí .htaccess zamezí přístup přes HTTP (postup je ve fórech několikrát).
2Stilett: dik to me nenapadlo, ze bych moch zabranit pristup k souboru.