Источники политики безопасности контента connect-src «unsafe-inline» и «unsafe-eval»

Я пытаюсь разобраться, в какой ситуации в директиве понадобятся источники «unsafe-inline» и «unsafe-eval». Они перечислены здесь как источники:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src .

Мне кажется ясным, зачем нужны эти источники на script-src, я просто не могу собрать воедино, зачем они нужны, и я предполагаю, что у MDN должна быть причина, чтобы перечислить их в качестве источников в этой директиве.

Может ли кто-нибудь помочь мне понять или дать мне пример использования? Возьмем пример ниже. Обратите внимание, что я успешно делаю запрос GET к mocky.io из встроенного скрипта, а затем вызываю eval() с обратным вызовом БЕЗ источника «unsafe-inline» или «unsafe-eval» для connect-src директива.

      <html lang="en">

<head>
    <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-inline' 'unsafe-eval'; connect-src https://run.mocky.io;">
</head>

<body>
    <h1>Testing CSP</h1>
    
    <!-- testing any JS executing from unsafe inline -->
    <script type="text/javascript">
    console.log("Testing some unsafe inline");
    </script>
    
    <!-- testing XHR calls from unsafe inline -->
    <script type="text/javascript">
    const callMocky = () => {
        var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                //eval from the XHR state change
                eval("console.log('XHR Sent and Received!')")
                console.log(xhttp.responseText);

            }
        };
        xhttp.open("GET", "https://run.mocky.io/v3/7ef12b35-8438-424f-8a5f-b11521d03fe7", true);
        xhttp.send();
    }

    callMocky()
    </script>

    <!-- testing unsafe eval from unsafe inline -->
    <script type="text/javascript">
        eval('console.log("this is an unsafe eval!")')
    </script>


</body>

</html>

0 ответов

Другие вопросы по тегам