Дата  Запланированые курсы
25.02 Поисковая оптимизация (SEO) для профессионалов
25.02 MOC-20742B. Инфраструктура идентификации на основе Windows Server 2016
25.02 Работа в MS Excel. Базовый уровень
25.02 MOC-20762. Разработка баз данных SQL
25.02 Архитектура современных компьютеров
03.03 Рисунок
04.03 DEV-PY-MP. Модульная программа "Разработчик прикладного программного обеспечения (Язык Python)"
04.03 DEV-C-CP. Комплексная программа «Разработчик прикладного программного обеспечения (Языки С и C++)»
04.03 Основы алгоритмизации и программирования (Группа II)
04.03 Основы алгоритмизации и программирования (Группа I)
04.03 DEV-C-CP+. Расширенная комплексная программа «Разработчик прикладного программного обеспечения (Языки С и C++)»
04.03 DEV-C10. Процедурное программирование. Языки С/C++
04.03 DEV-PY100. Основы процедурного программирования на языке Python
04.03 DEV-PY-MP+. Расширенная модульная программа "Разработчик прикладного программного обеспечения (язык Python)"
04.03 Разработка пользовательских Web-интерфейсов (JavaScript)
05.03 DEV-J-MP+. Расширенная комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
05.03 DEV-J10. Программирование на платформе Java. Введение в язык Java
05.03 DEV-J-CP. Комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
11.03 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
11.03 MOC-20744A. Безопасность инфраструктуры средствами Windows Server 2016
11.03 Основы создания веб-сайтов. Adobe Dreamweaver
11.03 MOC-20764. Администрирование инфраструктуры баз данных SQL
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
14.03 Работа в MS Excel. Расширенные возможности
18.03 Инструменты бизнес-анализа Microsoft Excel: PowerPivot, PowerView
18.03 DEV-C21. Объектно-ориентированное программирование. Углубленное изучение. Язык С++
18.03 Разработка баз данных (MS Access)
18.03 MOC-10961B. Автоматизация администрирования с Windows PowerShell
20.03 NET-DLINKSW-LAB. Технологии коммутации современных сетей Ethernet. Лабораторный практикум
20.03 Автоматизация работы в Excel с использованием VBA
25.03 Информационно-коммуникационные технологии в учебном процессе
25.03 DEV-PY110. Процедурное программирование на языке Python (расширенный курс)
01.04 Трёхмерное моделирование. 3ds Max
01.04 Linux-MP. Модульная программа «Архитектура и администрирование Linux»
01.04 Linux-LE. Основы архитектуры и администрирования Linux
01.04 Средства растровой графики. Adobe Photoshop
01.04 Введение в тестирование программного обеспечения
02.04 DEV-J20. Программирование на платформе Java. Стандартные пакеты
08.04 Linux-LF. Расширенное администрирование ОС Linux
08.04 Средства векторной графики. Adobe Illustrator
08.04 Профессиональная верстка сайтов. HTML5 и CSS3
15.04 Компьютерное проектирование в системе AutoCAD (базовый курс)
16.04 DEV-C20. Объектно-ориентированное программирование. Базовый уровень. Язык С++
17.04 DEV-PY111. Базовые алгоритмы и структуры данных на языке Python
22.04 Adobe Photoshop для профессионалов
22.04 Adobe After Effects. Создание анимации и эффектов
06.05 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений
13.05 Компьютерное проектирование в системе AutoCAD (базовый курс)
20.05 DEV-C21. Объектно-ориентированное программирование. Углубленное изучение. Язык С++
27.05 DEV-PY200. Объектно-ориентированное программирование на языке Python
03.06 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
03.06 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
17.06 DEV-C22. Стандарт С++11, С++14, С++17 для прикладного программирования
20.06 DEV-PYQT. Разработка оконных приложений Python c использованием Qt
02.09 DEV-PYWEB. Разработка WEB приложений на языке Python
02.09 DEV-QT10. Прикладное программирование на С++ с использованием Qt. Базовый уровень
02.09 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
30.09 Введение в тестирование программного обеспечения
30.09 Введение в тестирование программного обеспечения
30.09 Введение в тестирование программного обеспечения
Открыт набор на весенний семестр на программы профессиональной переподготовки
Начало занятий 1 марта!
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Относительные и абсолютные пути
Takker
#1 Оставлено : 15 октября 2010 г. 16:12:09(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.05.2010(UTC)
Сообщений: 8
Баллов: 24

Здравствуйте!
Очень хотелось бы получить обоснованный ответ на вопрос: <b>что лучше использовать - относительные или абсолютные пути в создании php-скриптов?</b>

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

P.S. Жажду ответа от Елены Сергеевны)
Реклама
Elena.Benker
#2 Оставлено : 15 октября 2010 г. 16:25:17(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 01.10.2005(UTC)
Сообщений: 136
Баллов: 408
Откуда: Russia St. Petersburg

Поблагодарили: 1 раз в 1 постах
Относительные пути, несомненно, удобны в смысле переноса.
Хотелось бы понять аргументы того разработчика.
Абсолютный путь можно писать явно, например: /var/www/html/mysite, что скверно и с точки зрения безопасности, т.к. показывает структуру каталогов на сервере.
С другой стороны, абсолютный путь в формате $_SERVER['DOCUMENT_ROOT']."/mysite" ничем не плох и комфортен при переносе проекта.
Takker
#3 Оставлено : 15 октября 2010 г. 16:43:42(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.05.2010(UTC)
Сообщений: 8
Баллов: 24

А если посмотреть со стороны дизайна? - особенно, если контент физически делится на директории, то есть запуск страницы и инициализация шаблона происходят из вложенных папок. Соответственно в шаблоне должно учитываться, откуда его вызывают.

Впрочем, это же надо учитывать и при использовании относительных путей.

Есть невнятное (личное) ощущение, что вызов одного и того же файла по относительному и по полному пути будет по-разному восприниматься сервером и иметь разное время исполнения.
Elena.Benker
#4 Оставлено : 15 октября 2010 г. 18:25:47(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 01.10.2005(UTC)
Сообщений: 136
Баллов: 408
Откуда: Russia St. Petersburg

Поблагодарили: 1 раз в 1 постах
Дизайн и структура каталогов - вещи несвязанные. Пути для указания шаблонов можно писать любым доступным способом, разницы нет.
Проверить ваше ощущение сложно, т.к. время выполнения скрипта ничтожно, но то, что пути, заданные разными способами, воспринимаются одинаково - это точно.
Тут просто нет почвы для разного времени исполнения, особенно если сравнивать со временем обращения к серверу баз данных или, тем более, со временем доставки страницы клиенту.
Takker
#5 Оставлено : 16 октября 2010 г. 3:53:49(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.05.2010(UTC)
Сообщений: 8
Баллов: 24

Углубившись в документацию, я нашел только одну однозначную рекомендацию - при указании пути к локальным файлам лучше использовать относительные пути, чем URL (во втором варианте, как я понимаю, запрос совершает своеобразный крюк.. думаю, что подтверждение есть где-то в модели osi).

Что же касается выбора между относительными и абсолютными путями, то тот самый разработчик пояснил - использование относительного пути делает код потенциально опасным, так как не исключает возможности инъекции - подмены пути. Ну, естественно, если разработчик не позаботился о безопасности дополнительно, а злоумышленник к тому же знаком с программой\скриптом\движком. Насколько это утверждение верно?
Elena.Benker
#6 Оставлено : 16 октября 2010 г. 14:32:05(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 01.10.2005(UTC)
Сообщений: 136
Баллов: 408
Откуда: Russia St. Petersburg

Поблагодарили: 1 раз в 1 постах
Нет в операционной системе никакого основания для каких-то крюков!
Подмена кода вообще - это, конечно, опасность. Но подменить можно любой фрагмент кода, не только пути.
Т.е. надо решать проблемы безопасности в комплексе.
Ведь в программе приходится хранить и пароль доступа к базе данных.
Мне кажется, что в погоне за безопасностью надо знать меру.
Takker
#7 Оставлено : 16 октября 2010 г. 15:04:03(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.05.2010(UTC)
Сообщений: 8
Баллов: 24

Большое спасибо, Елена Сергеевна, за подробные разъяснения.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.