Как защитить URL-адрес от манипуляции с / .. в php

Я использую систему управления файлами, и я хочу защитить URL-адрес от манипулирования, когда они заполняют URL-адрес /.. после строки URL-адреса. В таком случае они вылезают из корня. Как я могу это сделать?

Дополнительная информация: У меня есть папка на веб-сервере в httpdocs. Путь: httpdocs/filemanagement В URL вы можете увидеть: http://example.com/filemanagement/index.php?dir=blablabla При вводе после blablabla/.. кто-то может увидеть все папки, которые находятся в httpdocs

Привет, Джек, что ты до сих пор пробовал, что не работает?

d_kennetz 14.01.2019 17:45

Привет, Джек, ДЕЙСТВИТЕЛЬНО неясно, что вы здесь пытаетесь сделать, не могли бы вы уточнить, может быть, пример или 2 помогут

RiggsFolly 14.01.2019 17:47
«В таком случае они вылезут из корня». ... тогда это не корень, вы не могу переходите выше определенного DOCROOT, манипулируя URL-адресом, это просто не работает.
CD001 14.01.2019 17:47

Ну, у меня уже есть эта строчка, чтобы вы не видели директории linux: if ($file != '.' && $file != '..') { . Но это не защита. Если манипулировать URL-адресом, они все равно могут попасть в каталоги из корня

Jack Maessen 14.01.2019 17:48

Внесение в белый список или проверка абсолютного пути - это варианты против «эксплойтов LFI». А еще лучше не запускайте собственный браузер файлов / каталогов.

mario 14.01.2019 17:49

Сообщение выше обновлено!

Jack Maessen 14.01.2019 17:54

Лучший способ - поместить БД между ними и путем к файлу, имя файла, которое они ищут, ищется в БД, где сохраняется путь, затем этот путь используется, поэтому данные конечного клиента не используются в пути.

ArtisticPhoenix 14.01.2019 17:54

Связанный? - stackoverflow.com/questions/2530372/…

ArtisticPhoenix 14.01.2019 17:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
8
34
1

Ответы 1

Если вы можете получить доступ к предыдущей папке, набрав только после строки URL-адреса /. или /.., вы можете поймать их с помощью $_SERVER['QUERY_STRING']

if (basename($_SERVER['QUERY_STRING']) == ".." or basename($_SERVER['QUERY_STRING']) == "." )  {

    exit('Not allowed');
}

Другие вопросы по теме