Всем привет, вот кусок кода
<?php defined('KEY') OR exit(file_get_contents('../../application/views/error/404.html'));
Как обойти что бы постоянно не исправлять путь до файла с ошибкой?
Переадресацию не предлагать
Может через $_SERVER['DOCUMENT_ROOT']
На сколько это будет адекватно?
killer8080
9.10.2015 - 10:22
а не проще вынести эти файлы из паблик? Ну или если нет такой возможности, ограничить доступ к ним через .htaccess?
Как альтернатива - реврайтом запретить доступ к .php файлам, чтобы все запросы шли через index.php . Я так у себя реализовал.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
killer8080
Цитата (killer8080 @ 9.10.2015 - 09:20) |
ограничить доступ к ним через .htaccess? |
inpost
Цитата (inpost @ 9.10.2015 - 10:28) |
реврайтом запретить доступ к .php файлам |
Можно и так, но зачем затрагивать сервер когда можно организовать это по коду? Чем плох такой вариант?
killer8080
9.10.2015 - 10:43
Цитата (Wind @ 9.10.2015 - 09:36) |
Чем плох такой вариант? |
хардкодингом файловый путей, нельзя использовать код повторно в другом месте без рефакторинга.
killer8080Ну из-за этого и была создана тема :D Можно же вот так
<?php defined('KEY') OR exit(file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/application/views/error/404.html'));
Чем это плохо?
Я почему спрашиваю, потому что не знаю плохо это или хорошо. Если плохо то чем?
killer8080
9.10.2015 - 11:05
Цитата (Wind @ 9.10.2015 - 09:48) |
Чем это плохо? |
1 сайт необязательно должен находится в корне DOCUMENT_ROOT
2 $_SERVER['DOCUMENT_ROOT'] это переменная окружения сервера полученная PHP из вне, на неё нельзя особо полагаться, она зависит от конфигурации сервера, и в некоторых случаях может указывать неправильный путь, не говоря уже наличии/отсутствии слеша в конце. Доверять можно только встроенным волшебным константам __DIR__, __FILE__, но в любом случае ты жестко завязываешься на файловую структуру, что затрудняет переносимость кода.
Другой вопрос, для чего вообще нужна эта защита? Если это просто файл с декларацией функции или класса, или массив с конфигом, то прямой вызов этого php файла ничем не грозит в плане безопасности.
killer8080Спасибо за развернутый ответ
Цитата (killer8080 @ 9.10.2015 - 11:05) |
Другой вопрос, для чего вообще нужна эта защита? Если это просто файл с декларацией функции или класса, или массив с конфигом, то прямой вызов этого php файла ничем не грозит в плане безопасности. |
На всякий случай
если открыть файл по url которого нет у меня выдает ошибку, а если есть то белый экран, вот это и не дает покоя
Invis1ble
9.10.2015 - 13:56
Цитата (killer8080 @ 9.10.2015 - 11:05) |
Если это просто файл с декларацией функции или класса, или массив с конфигом, то прямой вызов этого php файла ничем не грозит в плане безопасности. |
killer8080
9.10.2015 - 14:16
Цитата (Invis1ble @ 9.10.2015 - 12:56) |
раскрытие путей |
его вариант никак от этого не спасает
Invis1ble
9.10.2015 - 14:18
Цитата (killer8080 @ 9.10.2015 - 14:16) |
его вариант никак от этого не спасает |
Почему? 404 ошибка же. Если он использует этот же шаблон для обычной 404, то вполне себе спасает.
Правда, заголовки соответствующие слать еще надо.
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
killer8080
9.10.2015 - 14:21
Цитата (Invis1ble @ 9.10.2015 - 13:18) |
Почему? 404 ошибка же. |
нет, сервер же ответит кодом 200 в его варианте.
Invis1ble
9.10.2015 - 14:23
Цитата (killer8080 @ 9.10.2015 - 14:21) |
Цитата (Invis1ble @ 9.10.2015 - 13:18) | Почему? 404 ошибка же. |
нет, сервер же ответит кодом 200 в его варианте.
|
killer8080
9.10.2015 - 14:26
Цитата (Invis1ble @ 9.10.2015 - 13:23) |
ну, я уточнил уже выше про заголовки |
когда я отвечал, ты еще не подправил пост
В любом случае это неправильно хардкодить защиту в каждом файле, правильно
Цитата (killer8080 @ 9.10.2015 - 09:22) |
вынести эти файлы из паблик? Ну или если нет такой возможности, ограничить доступ к ним через .htaccess? |
решать вопросы безопасности сервера, на уровне сервера
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.