Политика безопасности контента, блокирующая вход в Twitter (abraham / twitteroauth) - PullRequest
0 голосов
/ 01 марта 2019

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

Я использую window.open для создания всплывающего окна и отправки сообщений вphp-файл библиотеки twitter.Эта часть отлично работает.Я могу нажать кнопку авторизации приложения, и пользователь вошел в систему. Проблема в том, что всплывающее окно не закрывается, и пользователь не перенаправляется на страницу участников.

Это журнал csp, который я получаю каждый раз, когда появляется ошибкапроисходит.

{
    "csp-report": {
        "document-uri": "https://dev.example.com/twitter-callback.php?oauth_token=Fr5kdwAAAAAAy_TdAAABaTlfL8o&oauth_verifier=i418eqFom1jKd3jYrpirNvAlPJnOBedG",
        "referrer": "https://api.twitter.com/oauth/authorize",
        "violated-directive": "script-src-elem",
        "effective-directive": "script-src-elem",
        "original-policy": "upgrade-insecure-requests; default-src https:; connect-src 'self'; font-src 'self' data:; frame-src accounts.google.com platform.twitter.com syndication.twitter.com staticxx.facebook.com www.facebook.com www.google.com; frame-ancestors 'none'; img-src 'self' data: platform.twitter.com syndication.twitter.com *.twimg.com; script-src 'self' 'unsafe-inline' platform.twitter.com/widgets.js apis.google.com/ cdn.polyfill.io/v2/polyfill.min.js cdn.syndication.twimg.com/timeline/profile cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js connect.facebook.net/en_GB/sdk.js connect.facebook.net/en_US/sdk.js platform.twitter.com www.google.com/recaptcha/api.js www.gstatic.com/charts/ www.gstatic.com/recaptcha/ 'nonce-cjJas4W2X3GtCJszEQ0UZtZqie1hGOWr'; style-src 'self' 'unsafe-inline' blob: cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/ www.gstatic.com/charts/ platform.twitter.com *.twimg.com; base-uri 'none'; object-src 'self'; manifest-src 'self'; report-uri /csp-report/csp.php;",
        "disposition": "enforce",
        "blocked-uri": "inline",
        "line-number": 1,
        "source-file": "https://dev.example.com/twitter-callback.php?oauth_token=Fr5pdwAAAy_TAABaTlfL8o&oauth_verifier=i418eqFm1jrNvAlPJnOBedG",
        "status-code": 0,
        "script-sample": ""
    }
} at Date: March 01 2019 13:08:56

Если я выключаю csp, то логин работает нормально, так что это определенно вызывает csp.

Редактировать: Я пытался добавить политику script-src-elemк CSP, например, script-src-elem 'self' 'unsafe-inline' api.twitter.com/oauth/authorize, но это не сработало.

1 Ответ

0 голосов
/ 01 марта 2019

В конце концов я понял это сам.

Проблема была вызвана наличием одноразового номера в script-src.Мой скрипт php внедряет встроенный javascript, чтобы закрыть всплывающее окно и перенаправить, но я забыл о добавлении одноразового номера в эти теги скрипта.

    // close child window and redirect parent window then exit
    echo "<script nonce=\"$nonce\">
    if (window.opener) {
    window.opener.location.href = 'members.php';
    window.close();
    } else {
     window.location.href = 'members.php';
    }
    </script>";
    exit;

Готово

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...