ФорумПрограммированиеPHP для идиотов → Запрет запуска файлов напрямую.

Запрет запуска файлов напрямую.

  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 12 октября 2010 г. 14:02

    Наверно, запуск фалов напрямую, является потенциальной угрозой.

    Как вы запрещаете запускать файлы напрямую?
    Сессии, реферер или переменные какие либо проверяете?

    Неужели в каждом файле нужно вставлять строчку проверки, или можно как то настройками апача или .htaccess, запретить запуск файлов извне?
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 12 октября 2010 г. 14:14, спустя 11 минут 59 секунд

    а чем плох запуск файлов напрямую?
    ну запустят - и что дальше?
    все умрут, а я изумруд
  • Biggless

    Сообщения: 78 Репутация: N Группа: Кто попало

    Spritz 12 октября 2010 г. 14:17, спустя 2 минуты 44 секунды

    Допустим, есть index.php (можно обращаться) и config.php (нельзя).
    index.php

    define('VERYSECRETPIECEOFSHIT',1);

    config.php

    defined('VERYSECRETPIECEOFSHIT') or die ('shit happens :(');
  • arvitaly

    Сообщения: 292 Репутация: N Группа: Адекваты

    Spritz 12 октября 2010 г. 14:18, спустя 1 минуту 47 секунд

    а чем плох запуск файлов напрямую?
    ну запустят - и что дальше?

    if ($error)
    {
    include ("send_mail.php");exit;
    }
    Спустя 56 сек.
    Через htaccess можно запретить все, что угодно, вопрос один - по какому критерию
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 12 октября 2010 г. 14:21, спустя 2 минуты 31 секунду


    а чем плох запуск файлов напрямую?
    ну запустят - и что дальше?

    if ($error)
    {
    include ("send_mail.php");exit;
    }
    Спустя 56 сек.
    Через htaccess можно запретить все, что угодно, вопрос один - по какому критерию
    и что это?
    тут смотря какая структура сайта…
    допустим у меня все запросы централизованно разруливаются роутером и ниче напрямую не запустишь
    да даже если и запустишь, какой толк от запущенного файла с классом?
    все умрут, а я изумруд
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 12 октября 2010 г. 14:22, спустя 1 минуту 24 секунды

    допустим у меня все запросы централизованно разруливаются роутером и ниче напрямую не запустишь

    +1, самый лучший вариант
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 12 октября 2010 г. 14:28, спустя 5 минут 59 секунд

    md5, Ну допустим у меня есть файл который выполняет удаление какого то элкмента. Этот файл подгружается роутером.

    пример

    <?
    $newClass=new Class($db);

    $id=(int)$_POST["objectID"];

    $newClass->deleteObject($id);

    header("Location: /admin/delete-object");
    die();


    Запуская этот файл напрямую и передавая соответствующий параметр, можно удалить мне все объекты.
    А через интерфейс пользователя он не допускается к данному файлу.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 12 октября 2010 г. 14:31, спустя 3 минуты 14 секунд

    у меня:
    .htaccess
    одна точка входа
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 12 октября 2010 г. 14:35, спустя 3 минуты 36 секунд

    тоже одна точка входа, при всем желании нихуя не запустить
    Сапожник без сапог
  • arvitaly

    Сообщения: 292 Репутация: N Группа: Адекваты

    Spritz 12 октября 2010 г. 14:36, спустя 36 секунд

    и что это?
    тут смотря какая структура сайта…
    допустим у меня все запросы централизованно разруливаются роутером и ниче напрямую не запустишь
    да даже если и запустишь, какой толк от запущенного файла с классом?


    Да я не спорю при нормальной структуре канеш ничо не будет, ТС не говорил какая у него там
    Спустя 24 сек.
    И судя по всему у него как раз таки будет
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 12 октября 2010 г. 14:40, спустя 4 минуты 36 секунд

    Professor, ну значит хуево спроектировал
    все умрут, а я изумруд
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 12 октября 2010 г. 14:45, спустя 5 минут 9 секунд


    тоже одна точка входа, при всем желании нихуя не запустить


    ну в теории, если нет .htaccess - можно открыть /code/core/Session/StorageAdapter/File.php , который implements Session_StorageAdapterInterface, который не подгрузится autoload'ом, так как мы миновали точку входа. И получим фатал: интерфейс андефайнд
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 12 октября 2010 г. 14:46, спустя 40 секунд

    ну у меня тоже 1 точка входа.
    .htaccess

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    Options -Indexes

    RewriteRule ^(.*)$ index.php?URL=$1 [L]


    но разве это
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    не позволяет запускать файлы напрямую если они существуют?


  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 12 октября 2010 г. 14:48, спустя 2 минуты 22 секунды

    Professor, так ебать, внутри %document_root%/code/ сделай ты .htaccess, в котором deny from all
  • arvitaly

    Сообщения: 292 Репутация: N Группа: Адекваты

    Spritz 12 октября 2010 г. 14:51, спустя 2 минуты 30 секунд

    не позволяет запускать файлы напрямую если они существуют?


    А попробуй))
    RewriteRule ^(.*)$ index.php?URL=$1 [L]
    кидает на index все что прошло
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    как бэ

Пожалуйста, авторизуйтесь, чтобы написать комментарий!