X-FRAME-OPTIONS отображается дважды, а X-XSS-PROTECTION отображается неправильно

Я пытаюсь исправить свои заголовки. Я вижу две ошибки при проверке сетевых запросов при посещении моей страницы:

1) X-FRAME-OPTIONS: SAMEORIGIN отображается дважды:

Cache-Control:no-cache
Connection:Keep-Alive
Content-Encoding:gzip
Content-Type:text/html; charset=UTF-8
Date:Wed, 04 Oct 2017 12:58:30 GMT
Keep-Alive:timeout=3, max=1000
Server:Apache
Set-Cookie:laravel_session=eifQ%3D%3D; expires=Wed, 04-Oct-2017 14:58:30 GMT; Max-Age=7200; path=/; secure; httponly
Set-Cookie:XSRF-TOKEN=n0%3D; expires=Wed, 04-Oct-2017 14:58:30 GMT; Max-Age=7200; path=/
Transfer-Encoding:chunked
X-CDN:Incapsula
X-Frame-Options:SAMEORIGIN * <-------------- HERE
X-Frame-Options:SAMEORIGIN * <-------------- HERE
X-Iinfo:7-6626704-6651371 NNNN CT(0 0 0) RT(1507121414380 495318) q(0 1 1 -1) r(2 2) U16
X-XSS-Protection:%E2%80%9C1;mode=block%E2%80%9D <-------- Strange Encoding here...

2) Я вижу следующую ошибку на консоли для X-XSS-PROTECTION:

Ошибка синтаксического анализа заголовка X-XSS-Protection: â1; mode = blockâ: ожидается 0 или 1 в позиции символа 0. Будут применены защиты по умолчанию.

Я использую Laravel 5.0. FrameGuard.php Промежуточное программное обеспечение по умолчанию неактивно, начиная с Laravel 4.2, но у вас есть возможность включить его при необходимости. Когда он отключен, я вижу вышеупомянутые ошибки и действительно не могу понять, почему, поэтому сначала я перезаписал эти заголовки, фактически используя это промежуточное ПО.

Когда я добавляю Illuminate\Http\Middleware\FrameGuard.php Промежуточное программное обеспечение, которое содержит приведенный ниже код, похоже, ничего не меняет:

public function handle($request, Closure $next)
{
$response = $next($request);

$response->headers->set('X-XSS-Protection', '1; mode=block');
$response->headers->set('Content-Type','text/html; charset=UTF-8');
$response->headers->set('X-Frame-Options', 'SAMEORIGIN', true);

return $response;
}

Я также использую Socialite, который обеспечивает аутентификацию Facebook. Есть ли вероятность, что он изменяет какие-либо заголовки?

8

Решение

Веб-сервер может добавлять заголовки к ответам в дополнение к тем, которые отправляются PHP. Мы можем проверить, какие заголовки добавляет веб-сервер, создав пустой HTML-файл в общественности каталог, такой как общественности / dummy.html

Затем перейдите на эту страницу в браузере, http://example.com/dummy.html, и проверьте, какие заголовки содержит ответ. В качестве альтернативы мы можем использовать локон Команда для отображения заголовков ответа:

$ curl -I 'http://example.com/dummy.html'

HTTP/2 200
date: Mon, 16 Oct 2017 20:34:24 GMT
...
x-xss-protection: 1; mode=block
x-frame-options: SAMEORIGIN

-D вариант отвалы заголовки файла. В этом случае мы указываем - как файл для отправки вывода через STDOUT до терминала.

Если мы увидим x-xss-protection или же x-frame-options Заголовки в этом выводе, это означает, что веб-сервер отправляет эти заголовки. Может быть повреждено значение для x-xss-protection в конфигурации веб-сервера (похоже, кто-то вставил стилизованные двойные кавычки (“…”) вместо прямых кавычек ("…") который сервер интерпретирует как часть значения заголовка).

За Nginx, Ищу add_header ... директивы в файлах конфигурации. При использовании Apache HTTPD, проверить Header set ... директивы в конфигурации сервера или .Htaccess файл.

Также кажется, что сайт использует CDN Incapsula, который также может вводить заголовки, но я не смог найти никакой информации в документации Incapsula, которая бы указала на это.

Laravel Socialite не добавляет эти заголовки к ответам.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]