Я использую систему управления файлами, и я хочу защитить URL-адрес от манипулирования, когда они заполняют URL-адрес /.. после строки URL-адреса. В таком случае они вылезают из корня. Как я могу это сделать?
Дополнительная информация:
У меня есть папка на веб-сервере в httpdocs. Путь: httpdocs/filemanagement
В URL вы можете увидеть: http://example.com/filemanagement/index.php?dir=blablabla
При вводе после blablabla/.. кто-то может увидеть все папки, которые находятся в httpdocs
Привет, Джек, ДЕЙСТВИТЕЛЬНО неясно, что вы здесь пытаетесь сделать, не могли бы вы уточнить, может быть, пример или 2 помогут
Ну, у меня уже есть эта строчка, чтобы вы не видели директории linux: if ($file != '.' && $file != '..') { . Но это не защита. Если манипулировать URL-адресом, они все равно могут попасть в каталоги из корня
Внесение в белый список или проверка абсолютного пути - это варианты против «эксплойтов LFI». А еще лучше не запускайте собственный браузер файлов / каталогов.
Сообщение выше обновлено!
Лучший способ - поместить БД между ними и путем к файлу, имя файла, которое они ищут, ищется в БД, где сохраняется путь, затем этот путь используется, поэтому данные конечного клиента не используются в пути.
Связанный? - stackoverflow.com/questions/2530372/…






Если вы можете получить доступ к предыдущей папке, набрав только после строки URL-адреса /. или /.., вы можете поймать их с помощью $_SERVER['QUERY_STRING']
if (basename($_SERVER['QUERY_STRING']) == ".." or basename($_SERVER['QUERY_STRING']) == "." ) {
exit('Not allowed');
}
Привет, Джек, что ты до сих пор пробовал, что не работает?