CI должен ли я использовать определенный БАЗОВЫЙ ПУТЬ для модели и представления?

#php #codeigniter #security

#php #codeigniter #Безопасность

Вопрос:

Как я правильно понял, в CI по соображениям безопасности мы должны написать эту строку кода

 defined('BASEPATH') OR exit('No direct script access allowed');
 

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

Однако мне интересно, нужно ли также писать этот код на всех страницах представления и модели? Поскольку я искал в Google и stackoverflow, на страницах представления и модели нет четкого объяснения.

Заранее благодарю вас

Ответ №1:

Нет, вам не обязательно это делать.

В исходных файлах CodeIgniter есть эта строка, потому что он пытается работать с почти нулевой конфигурацией, что часто означает, что пользователь поместил все под webroot.

Но, как говорится, это не значит, что ваша настройка должна быть такой. Совсем наоборот — только ваш index.php файл должен быть доступен через Интернет, и если вы это сделаете, эти строки не будут иметь значения.

И, конечно, вы можете запретить доступ к файлам фреймворка с помощью правил .htaccess в Apache или соответствующих location блоков в nginx.

Ответ №2:

Да, это необходимо для обеспечения безопасности. Это для запрета прямого доступа к вашим views models файлам amp; через браузер. Если вы не включите это, любой может получить доступ к вашим файлам через браузер, и это риск.

Однако вы можете запретить прямой доступ к вашему файлу .htaccess через application каталог in следующим кодом

 <IfModule authz_core_module>
    Require all denied
</IfModule>
<IfModule !authz_core_module>
    Deny from all
</IfModule>
 

Ответ №3:

Всегда безопаснее добавлять

  defined('BASEPATH') OR exit('No direct script access allowed');
 

в вашей модели и представлении, потому что, если ваш сервер не разрешает .htaccess или он переопределен, к скрипту можно получить доступ.