sunsetting
Witam.
Mam pewne pytanie. Czytałem i słyszałem, że aby zabezpieczyć się przed bugiem funkcji include() trzeba wyłączyć od strony admina zdalne otwieranie plików. Jak to ma wyglądać w rzeczywistości (szczegółowo)?
W /etc/php5/apache2/php.ini
Wyszukaj frazę "allow_url_include" i zmień na off
Tak po za tym nadal nie ubezpieczy cię całkowicie, bo includować może lokalne pliki. (to tylko utrudnia).
Pomyśl o filtrowaniu wejścia
OK, znalazłem bardzo ciekawy portal o PHP, HTML, JavaScript. Może komuś jeszcze się przyda. Oto link - http://webmade.org/wyszuk...?fraza=include. Tak poza, to dzięki za odpowiedź.
a nie wystarczy zrobić np. czegoś takiego:
case(zmienna)
{
bleble : include(costam);
bleble : include(costam)
bleble : include(costam)
else include("blad.html")
}
??
to w takich prostych przykladach powinno starczyc ; P
case(zmienna)
{
bleble : include(costam);
bleble : include(costam)
bleble : include(costam)
else include("blad.html")
}
O! Ciekawe... Na pewno się przyda. Wielkie dzięki.
sorki nie wiem czy działa
zamiast else moze byc default : include("blad.html")
Ogólnie to trzeba dawać jak najmniejszą swobodę użytkownikom. Używać ścieżek absolutnych np: Kod: include("/strona/include/$inc"); + filtrowanie $inc z niepożądanych znaków typu: Cytat: ; . / ..
Ustawić w php.ini allow_url_fopen i allow_url_include, o register_globals nie wspominając (domyślnie w nowych wersjach PHP jest off, ale warto sprawdzić).
Możesz też looknać na funkcję file_get_contents(), tylko, że ona nie wykonuje kodu tylko czyta zawartość pliku.
W tym tricku z case na pewno powinno być default a nie else
Ogólnie to trzeba dawać jak najmniejszą swobodę użytkownikom.
O hackerach nie wspominając.
Ustawić w php.ini allow_url_fopen i allow_url_include, o register_globals nie wspominając (domyślnie w nowych wersjach PHP jest off, ale warto sprawdzić).
Jakby co, to w PHP w wersji 4 i 5 jest.
Możesz też looknać na funkcję file_get_contents(), tylko, że ona nie wykonuje kodu tylko czyta zawartość pliku.
Zerknę, zerknę.
W tym tricku z case na pewno powinno być default a nie else
To akurat wiedziałem.
W każdym razie bardzo dziękuje za pomoc i poświęcony czas.