Отдельные сценарии песочницы на странице (с использованием CSP?) - PullRequest
0 голосов
/ 19 июня 2020

У меня есть страница html с несколькими тегами сценария (виджетами), и я хотел бы ограничить доступ, который каждый сценарий имеет к моему бэкэнду.

Вот моя структура маршрута:

site.com # This is the location of the page which contains a 'script 1' and a 'script 2'
site.com/api1/ # This is the API for script 1
site.com/api2/ # This is the API for script 2

Я использую аутентификацию на основе cook ie, и мне бы хотелось избежать необходимости выполнять вход по API, поэтому, когда пользователь загружает site.com, они входят в site.com и получите безопасный http-only cook ie для site.com. Теперь каждый скрипт может при желании вызывать любой бэкэнд.

Есть ли какой-либо способ управления / изолирования среды выполнения скрипта таким образом, чтобы они не могли делать вызовы API к определенному ресурсу / пути? Я знаю, что могу сделать что-то подобное на уровне страницы, используя CSP и политику connect-sr c, и я также знаю, что могу использовать фреймы и / или разные домены, но если возможно, сохранить все в одном домене и не использовать фреймы, это было бы идеально.

MDN утверждает, что вы можете создать политику CSP с хостом connect-sr c и 'nonce', но я понятия не имею, что это действительно так, и не нашел никаких примеров этой комбинации в Интернете. Я подозреваю, что это не ограничивает политику сценарием, совпадающим с nonce, но я бы хотел, чтобы это было сделано :) CSRF / nonce / JWT в источник сценария, а затем требуя, чтобы этот сценарий отправлял одноразовый номер с каждым запросом, чтобы я мог проверить на сервере, что они не получают доступ к ресурсу, который им не должен, но я не думаю, что есть безопасный способ передать что-то подобное, когда все находится в одном домене / пути.

Я веду себя глупо, пытаясь разместить все эти API в одном кадре / домене? Безопасность браузера явно в значительной степени зависит от происхождения как средства контроля доступа.

...