Метод withHttpOnly класса Cookie
Метод withHttpOnly класса Cookie
возвращает новый объект куки с установленным
флагом HttpOnly. Если флаг включён,
браузер запрещает доступ к куке из JavaScript
через document.cookie. Это защищает
куку от кражи через XSS-атаки. Метод принимает
один параметр - булево значение, включающее
или выключающее флаг.
Синтаксис
public function withHttpOnly(bool $httpOnly): static
Пример
Давайте создадим куку и включим у неё флаг
HttpOnly:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/cookie', name: 'article_cookie')]
public function index(): Response
{
$cookie = Cookie::create('token')
->withValue('abcde')
->withHttpOnly(true);
$res = new Response('cookie set');
$res->headers->setCookie($cookie);
return $res;
}
}
?>
В результате в браузер уйдёт заголовок
Set-Cookie с флагом HttpOnly:
Set-Cookie: token=abcde; path=/; httponly
Пример
Давайте выключим флаг HttpOnly,
передав false:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/cookie', name: 'article_cookie')]
public function index(): Response
{
$cookie = Cookie::create('token')
->withValue('abcde')
->withHttpOnly(false);
$res = new Response('cookie set');
$res->headers->setCookie($cookie);
return $res;
}
}
?>
В результате флаг HttpOnly в заголовке
отсутствует:
Set-Cookie: token=abcde; path=/
Пример
Давайте прочитаем флаг HttpOnly
через метод isHttpOnly:
<?php
use Symfony\Component\HttpFoundation\Cookie;
$cookie = Cookie::create('token')
->withValue('abcde')
->withHttpOnly(true);
$res = $cookie->isHttpOnly();
var_dump($res);
?>
Результат выполнения кода:
true
Смотрите также
-
класс
Cookie,
который представляет объект куки -
метод
create,
который создаёт новый объект куки -
метод
withSecure,
который включает передачу куки только по HTTPS -
метод
withSameSite,
который задаёт политику SameSite для куки