#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 или он переопределен, к скрипту можно получить доступ.