Безопасность — еще одна важная функция при создании веб-приложений. Это гарантирует пользователям сайта, что их данные защищены. CakePHP предоставляет некоторые инструменты для защиты вашего приложения.
Шифрование и дешифрование
Библиотека безопасности в CakePHP предоставляет методы, с помощью которых мы можем шифровать и дешифровать данные. Ниже приведены два метода, которые используются для той же цели.
static Cake\Utility\Security::encrypt($text, $key, $hmacSalt = null) static Cake\Utility\Security::decrypt($cipher, $key, $hmacSalt = null)
Метод шифрования примет текст и ключ в качестве аргумента для шифрования данных, а возвращаемое значение будет зашифрованным значением с контрольной суммой HMAC.
Для хеширования данных используется метод hash (). Ниже приведен синтаксис метода hash ().
Синтаксис
static Cake\Utility\Security::hash($string, $type = NULL, $salt = false)
CSRF
CSRF означает « Подделка межсайтовых запросов» . Включив компонент CSRF, вы получаете защиту от атак. CSRF — распространенная уязвимость в веб-приложениях. Он позволяет злоумышленнику захватывать и воспроизводить предыдущий запрос, а иногда и отправлять запросы данных, используя теги изображений или ресурсы в других доменах. CSRF можно включить, просто добавив CsrfComponent в массив компонентов, как показано ниже.
public function initialize(){ parent::initialize(); $this->loadComponent('Csrf'); }
CsrfComponent легко интегрируется с FormHelper . Каждый раз, когда вы создаете форму с помощью FormHelper, она вставляет скрытое поле, содержащее маркер CSRF.
Хотя это не рекомендуется, вы можете отключить CsrfComponent для определенных запросов. Это можно сделать с помощью диспетчера событий контроллера во время метода beforeFilter () .
public function beforeFilter(Event $event){ $this->eventManager()->off($this->Csrf); }
Компонент безопасности
Компонент безопасности обеспечивает более жесткую защиту вашего приложения. Он предоставляет методы для различных задач, таких как —
-
Ограничение того, какие методы HTTP принимает ваше приложение. Перед выполнением побочных эффектов всегда следует проверять используемый метод HTTP. Вы должны проверить метод HTTP или использовать Cake \ Network \ Request :: allowMethod (), чтобы убедиться, что используется правильный метод HTTP.
-
Защита от подделки форм — по умолчанию SecurityComponent предотвращает несанкционированное вмешательство пользователей в формы. SecurityComponent предотвратит следующие вещи —
-
Неизвестные поля не могут быть добавлены в форму.
-
Поля не могут быть удалены из формы.
-
Значения в скрытых входах не могут быть изменены.
-
-
Требование использования SSL — все действия требуют SSL-защиты.
-
Ограничение связи между контроллерами. Мы можем ограничить, какой контроллер может отправлять запросы этому контроллеру. Мы также можем ограничить, какие действия могут посылать запрос к действию этого контроллера.
Ограничение того, какие методы HTTP принимает ваше приложение. Перед выполнением побочных эффектов всегда следует проверять используемый метод HTTP. Вы должны проверить метод HTTP или использовать Cake \ Network \ Request :: allowMethod (), чтобы убедиться, что используется правильный метод HTTP.
Защита от подделки форм — по умолчанию SecurityComponent предотвращает несанкционированное вмешательство пользователей в формы. SecurityComponent предотвратит следующие вещи —
Неизвестные поля не могут быть добавлены в форму.
Поля не могут быть удалены из формы.
Значения в скрытых входах не могут быть изменены.
Требование использования SSL — все действия требуют SSL-защиты.
Ограничение связи между контроллерами. Мы можем ограничить, какой контроллер может отправлять запросы этому контроллеру. Мы также можем ограничить, какие действия могут посылать запрос к действию этого контроллера.
пример
Внесите изменения в файл config / rout.php, как показано в следующей программе.
конфиг / routes.php
<?php use Cake\Core\Plugin; use Cake\Routing\RouteBuilder; use Cake\Routing\Router; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('login',['controller'=>'Logins','action'=>'index']); $routes->fallbacks('DashedRoute'); }); Plugin::routes();
Создайте файл LoginsController.php в src / Controller / LoginsController.php . Скопируйте следующий код в файл контроллера.
SRC / Controller / LoginsController.php
<?php namespace App\Controller; use App\Controller\AppController; class LoginsController extends AppController{ public function initialize(){ parent::initialize(); $this->loadComponent('Security'); } public function index(){ } } ?>
Создайте каталог Logins в src / Template и в этом каталоге создайте файл View с именем index.ctp . Скопируйте следующий код в этот файл.
SRC / Template / логины / index.ctp
<?php echo $this->Form->create("Logins",array('url'=>'/login')); echo $this->Form->input('username'); echo $this->Form->input('password'); echo $this->Form->button('Submit'); echo $this->Form->end(); ?>
Выполните приведенный выше пример, посетив следующий URL — http: // localhost: 85 / CakePHP / login
Выход
После выполнения вы получите следующий вывод.