2013-02-24 2 views
0

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

  • Некоторые люди говорит: «Нет необходимости двигаться выше папки общего доступа, пароль защиты не достаточно (первый вариант)»
  • Некоторые люди говорит: «Положите все важные файлы из public_html (2-й вариант)»
  • Некоторые люди говорят: «Вставьте только файлы index.php, css и js внутри public_html (3-й вариант)»

Я действительно смущен.

Первый вариант:

/public_html 
    /css 
    /images 
    /libs 
index.php 
profile.php 
search.php 

Второй вариант: Я все еще могу использовать ww.mysite.com/index.php, ww.mysite.com/profile.php .. структура ссылок

/libs 
/public_html 
     /css 
     /images 
    index.php 
    profile.php 
    search.php 

Третий вариант: Мои ссылки будет выглядеть следующим образом: ww.mysite.com/index.php?view=search

/view 
    -profile.php 
    -search.php 
/libs 
/public_html 
    /css 
    /images 
    index.php 

Какой из них лучшая практика? Структура каталога имеет значение для безопасности? Спасибо за помощь!

ответ

4

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

В первом и втором вариантах, если тип mime установлен неверно или по какой-либо другой причине PHP не анализирует файл, он будет обычно отображаться как text/html или обычный текст. В первом и втором вариантах это означает, что кто-то может потенциально захватить информацию, такую ​​как логины базы данных.

Я обычно установить его похож на третий вариант, но передать все в другой файл индекса, и не делают URI совпадают файлы view=search указывает, захватить файл search.php из папки view. Я не знаю об этом, но это личный вкус.

Моя установка будет выглядеть следующим образом

/private 
    /view 
     -profile.php 
     -search.php 
    /libs 
    -index.php 
/public_html 
    /css 
    /images 
    -index.php 

public_html/index.php просто руки прочь к частному значению, если она передается в виде обычного текста, он не дает никакой информации кроме того, что ваши файлы хранятся в другом каталоге. Вся обработка выполняется private/index.php

<?php 

    require_once('../private/index.php'); 

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

+0

Спасибо за ваше мнение, я нашел действительно хорошую статью, о которой вы говорите. Думаю, я поеду с этим. –

2

О структуре папок, это не связано с MVC или с использованием фреймворка или чего-либо еще. Файлы, которые не находятся в общедоступном каталоге, могут (в теории) доступны непосредственно пользователям. Структуры MVC выбирают эту файловую структуру, потому что это хорошая практика, для чего они предназначены, для обучения программистов хорошей практике.

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

Я не видел ваш код, но если вы разрешаете прямое получение php-файла на основе параметров запроса запроса, то у вас проблемы (с точки зрения безопасности). Вот почему frameworks реализует модель контроллера, контроллеров и маршрутизаторов переднего контроллера, чтобы отделить иерархию файлов php от того, как запрашивается url.

+0

Я не отказываюсь от программистов фреймворков, особенно я поклонник сообщества Yii и разработчиков ... Я отказываюсь от использования вещей, о которых я понятия не имею. Потому что я чувствую, что потерялся в framworks. Например, с помощью простой команды вы защищаете себя от XSS. Но это не заставляет меня узнать, что такое XSS? Я хочу иметь практические навыки в отношении «автозагрузчиков, ООП, шаблонов проектирования, PDO, интеграции с facebook, кеширования, защиты xss, csrf и т. Д. Это заставляет меня читать, изучать больше. Затем я могу лучше понять, какие рамки делают точно, и я могу чувствовать себя комфортно в рамки. –