Pozdrowienia, Mam nadzieję, że mój drobny program będzie bezpieczny, tak aby potencjalni szkodliwi użytkownicy nie mogli wyświetlać poufnych plików na serwerze.Ścieżka do pliku sanitize w PHP
$path = "/home/gsmcms/public_html/central/app/webroot/{$_GET['file']}";
if(file_exists($path)) {
echo file_get_contents($path);
} else {
header('HTTP/1.1 404 Not Found');
}
Off górze mojej głowie Wiem, że wejście takie jak „../../../../../../etc/passwd” byłoby kłopotów, ale zastanawiasz się, jakie inne podejrzane dane, których powinienem się spodziewać i jak im zapobiegać.
Wystarczy wykluczyć żadnych danych zawierającą ../ – halfdan
zgodzili się, że mogłoby rozwiązać jeden problem, ale jestem przy założeniu, że istnieje wiele innych zagrożeń muszę zwrócić uwagę. Szukam dobrego żelaznego rozwiązania dla wszystkich z nich – SeanDowney
@halfdan - zawsze staraj się unikać podejścia opartego na czarnej liście do takiego bezpieczeństwa, zawsze będzie coś, za czym tęsknisz. Takich jak użycie znaków backspace, tabulatorów, znaków nowej linii, znaków zerowych, innych znaków Unicode lub celowo przerwanych znaków Unicode, które przesłałyby twój filtr, ale nadal powodują, że funkcja PHP robi coś, z czym próbujesz ją chronić. Sprawdź, czego naprawdę chcesz: wynikowa ścieżka znajduje się w bezpiecznym miejscu. – Cheekysoft