Несоответствие токена Passbolt CSRF - PullRequest
0 голосов
/ 03 июля 2019

Я строю расширение и устанавливаю его вручную в хром. Все отлично работает, кроме создания чего-то нового. Я не мог создать пароль или пользователя. Это говорит мне, что "несоответствие токена CSRF". Когда я просматриваю заголовки запроса, вижу что-то вроде:

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,tr;q=0.8
Connection: keep-alive
Content-Length: 743
Content-Type: application/json
Cookie: csrfToken=************; CAKEPHP=********
DNT: 1
Host: local.passbolt.com
Origin: https://local.passbolt.com
Referer: https://local.passbolt.com/app/passwords
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
X-CSRF-Token: null
X-Requested-With: XMLHttpRequest

Я использую Passbolt за обратным прокси-сервером с несколькими виртуальными хостами и пытаюсь решить эту проблему около 2 рабочих дней. Очень нужна ваша помощь.

  • Версия Passbolt: Docker Container, размещенный на Ducker Hub
  • Браузер: Chrome 72.0.3626.119
  • Веб-сервер: Nginx 1.14.0 / Ubuntu

Что вы сделали

Следуйте этим инструкциям для использования passbolt https://help.passbolt.com/hosting/install/ce/docker.html

И следовал этим инструкциям для построения passbolt-extension https://github.com/passbolt/passbolt_browser_extension

Вот мой конф Nginx:

upstream passbolt{
  server 127.0.0.1:4343;
}

server {
  listen 443 ssl;
  listen [::]:443 ssl;
  server_name local.passbolt;
  add_header X-XSS-Protection "1; mode=block";
  proxy_cookie_path / "/; HTTPOnly; Secure";

  ssl on;
  ssl_certificate /etc/nginx/certs/ssl/cert.crt;
  ssl_certificate_key /etc/nginx/certs/ssl/cert.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

  ssl_prefer_server_ciphers   on;
  ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA HIGH !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
  ssl_dhparam    /etc/nginx/certs/dhparams.pem;

  location / {
    proxy_pass https://passbolt/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forward-Proto http;
    proxy_set_header X-Nginx-Proxy true;
    proxy_redirect off;
  }
}

Что случилось

После создания пользователя и входа в систему passbolt попытался создать безопасный пароль, и он выдает ошибку несоответствия токена CSRF с кодом 403. И не может видеть подробный журнал в «журналах докера» или журналах обратного прокси-сервера nginx.

...