Remove all malformed cookies in middleware

This commit is contained in:
Björn Fromme
2019-06-17 17:58:47 +02:00
parent cc0cb9b932
commit 31d10f27ab
2 changed files with 16 additions and 1 deletions
@@ -66,8 +66,9 @@ class BookingUrlUtility
$bpnCookie = null;
if (isset($_COOKIE[static::COOKIE_NAME])) {
if (false === preg_match('/([a-z]{4}|PA)\d{4}/', $_COOKIE[static::COOKIE_NAME])) {
if (!preg_match('/^([a-z]{4}|PA)\d{4}$/', $_COOKIE[static::COOKIE_NAME])) {
setcookie(static::COOKIE_NAME, '', time() - 3600);
unset($_COOKIE[static::COOKIE_NAME]);
} else {
$trackingCookie = $_COOKIE[static::COOKIE_NAME];
}
@@ -54,6 +54,8 @@ class TrackingMiddleware implements MiddlewareInterface
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$this->cleanupCookies();
if ($redirect = $this->matchRedirect($request)) {
[$uri, $responseCode] = $redirect;
@@ -165,6 +167,18 @@ class TrackingMiddleware implements MiddlewareInterface
setcookie(static::COOKIE_NAME, $code, $expiratonDate->getTimestamp(), '/');
}
protected function cleanupCookies(): void
{
if (!isset($_COOKIE[static::COOKIE_NAME])) {
return;
}
if (!preg_match('/^' . static::CODE_PATTERN . '$/', $_COOKIE[static::COOKIE_NAME])) {
setcookie(static::COOKIE_NAME, '', time() - 3600);
unset($_COOKIE[static::COOKIE_NAME]);
}
}
/**
* Borrowed from \TYPO3\CMS\Redirects\Service\RedirectService
*