структура папок codeigniter с использованием SSL - PullRequest
5 голосов
/ 22 апреля 2011

Привет, ребята, работающие над приложением CI, которое обеспечивает как публичную рекламу, так и частный (безопасный) доступ.Я не реализовывал SSL раньше, но я понимаю, что часть установки указывает, какие папки должны быть доступны с помощью https.

Я хотел бы получить несколько советов относительно того, как я должен структурировать свои папки, чтобы облегчить это.

Настройка влияет только на папку контроллеров?другими словами, следует ли разделить контроллеры приложений между общими и защищенными подпапками в стандартной папке контроллеров CI?

Нужно ли что-либо делать с моими папками видов и моделей?На что еще я должен обратить внимание?

Ваша помощь будет принята с благодарностью.

спасибо

Ответы [ 2 ]

3 голосов
/ 25 апреля 2011

ОК, лучший способ разделить вещи так, как вы хотите, - это:

  1. Настройте приложение CodeIgniter в папке, скажем /var/www и убедитесь, что все работает так, как вы хотите.
  2. Установите базовый URL для сайта в config.php CodeIgniter просто "/".
  3. Создайте виртуальный хост Apache для защищенной части сайта, прослушивая запросы через порт 443 или любой другой. Установите свой сертификат и так далее. http://www.namecheap.com хороши для сертификатов. Настройте веб-корень в качестве папки CodeIgniter, например, /var/www.
  4. Создайте еще один виртуальный хост Apache, указывая на тот же каталог, например / var / www для небезопасной версии сайта.

Теперь вы, все в порядке, на этом этапе сможете получить доступ ко всему сайту, используя либо https, либо стандартный http. Я думаю, что вы упомянули о возможности сделать шаг вперед, разрешив доступ только к определенным контроллерам через HTTPS и некоторым небезопасным. Для этого я бы сделал следующее.

  1. Создайте библиотеку CodeIgniter, назовите ее, скажем, Ssl.php, в папке вашего приложения / библиотеки. Введите следующий код:

class Ssl {

    public function require()
    {
        // Is the current request method secure, via SSL?
        if ( ! isset($_SERVER['https']) )
        {
            // No. Do something here, display an error, redirect... up to you
            show_error("This resource must be accessed through an SSL encrypted connection.");
        }
    }

}

Теперь, в ваших контроллерах приложений, просто загрузите библиотеку обычным способом $this->load->library('ssl'), и для любого метода контроллера, для которого вы хотите , требуется SSL-соединение, просто вызовите метод $this->ssl->require() перед любым выполнение начинается.

Вы могли бы даже пойти еще дальше и отбросить вызов этого метода до require() в функции контроллера класса __construct() или даже до целого нового контроллера, с которого вы, возможно, захотите расширить.

Надеюсь, это поможет.

0 голосов
/ 22 апреля 2011

Привет, я нахожусь в процессе разработки приложения CI, которое успешно работает с HTTPS / SSL.

Я думаю, вы немного смущены. Насколько я знаю, вы можете настроить сайт с поддержкой SSL только путем создания нового сайта или «виртуального хоста», если вы, например, используете Apache.

Таким образом, если бы вы использовали Apache, вы бы создали виртуальный хост для обработки запросов на порту 443, скажем, https://example.com, а затем установили для корневого веб-узла значение / var / www или где бы ни находилось ваше приложение CI. Вам также необходимо настроить Apache для использования файла сертификата, как только вы купите сертификат и загрузите биты и бобы после генерации запроса сертификата. Это проще, чем кажется.

Есть ли какая-то причина, по которой все ваше приложение не может работать через SSL? Вместо зашифрованного и незашифрованного раздела? Существует небольшая нагрузка на процессор для SSL, но она минимальна.

Надеюсь, это так или иначе поможет.

Редактировать в ответ на комментарий:

Не за что. Это минимальные накладные расходы. Для простоты, я бы просто поместил все это под vhost SSL. Кроме того, если вы разделите контент между SSL / не-SSL, вы можете заметить, что если вы включите контент, не основанный на SSL, на страницу SSL, пользователи получат в своем браузере неприятное сообщение о «небезопасном контенте» и т. Д., Что может отложите их и создайте ненужное сомнение.

Это может быть довольно сложно разделить, как вы хотите - так как вам понадобится отдельные корневые файлы CI index.php для каждого vhost, чтобы позволить CI правильно маршрутизировать его. Вы не могли просто установить vhost, обслуживающий каталог, такой как application / controllers / private /, потому что CodeIgniter не знал бы, как обработать запрос без каких-либо серьезных изменений в его основной маршрутизации.

Я бы честно просто засунул все под SSL-хост. Или другой вариант - настроить два приложения CI, работающие из одной и той же системной / основной папки CI ... если это имеет смысл, но тогда совместное использование контента, такого как библиотеки и модели, станет утомительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...