Скрыть порт из политики безопасности содержимого, чтобы скрипт-src считал URL-адрес собственным - PullRequest
0 голосов
/ 03 октября 2018

Я устанавливаю политику безопасности содержимого для своего сайта, но URL-адрес скрипта для моей системы комментариев содержит номер порта, т.е. http://dev.example.com:8080/client.js.

У меня есть несколько других URL, которые используют портыи я предпочел бы скрыть, какие порты использует мой сайт в случае возможных последствий для безопасности.

Как я могу скрыть эти URL-адреса, содержащие номера портов, чтобы CSP рассматривал URL-адреса как self?

Например, вместо http://dev.example.com:8080/client.js Я бы хотел, чтобы оно было http://dev.example.com/comments/client.js.

Я на сервере Nginx и пытался переиграть с переписыванием URL, но не могузаставить его работать.

Вот что я попробовал.

Это позволяет мне изменить URL-адрес сценария на http://dev.example.com/comments/client.js, но CSP по-прежнему обнаруживает http://dev.example.com:8080/client.js.

  location ~ /comments/ {
    return 301 http://dev.example.com:8080/client.js;
  }

Не работает

location ~ /comments/ {
    rewrite ^/comments/(.*) http://dev.example.com:8080/$1 last;
}

Просто чтобы прояснить, я знаю, что могу просто перебросить URL http://dev.example.com:8080/client.js прямо в CSP, например script-src 'self' dev.example.com:8080/client.js;, но я хочу, чтобы URL работал с selfнапример, script-src 'self'.

Возвращает 502 bad gateway Ошибка

location /comments {
    proxy_pass http://dev.example.com:8080/;
 }

Также возвращает 502 bad gateway.

location = /comments {
     return 301 /comments/;
}

 location ~ /comments/(?<ndpath>.*) {
    proxy_redirect off;
    proxy_set_header Host $host;

    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_pass_request_headers on;
    proxy_set_header Connection "keep-alive";
    proxy_store off;
    proxy_pass http://dev.example.com:8080/$ndpath$is_args$args;

    gzip on;
    gzip_proxied any;
    gzip_types *;
}

1 Ответ

0 голосов
/ 03 октября 2018

То, что вы ищете, это концепция обратного прокси. Описано здесь.

В вашем случае самый простой пример -

location /comments {
    proxy_pass http://localhost:8080/;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...