Aller au contenu

[VidéoStation] Fichier js non authentifié (cast_sender.js) => page non sécurisé


djo113

Messages recommandés

Bonjour,

un problème qui est présent dans la dernière version du paquet et dans la version précédente :

Erreur dans la console développeur de Chrome : VM1209:3 Refused to load the script 'https://www.gstatic.com/eureka/clank55/cast_sender.js' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval' data: blob: https://*.synology.com https://www.synology.cn/". 

Visiblement il y a un appel à ce script hors domaine lors d'une tentative de lecture vidéo depuis l'interface web.

Bonne soirée.

Lien vers le commentaire
Partager sur d’autres sites

Normalement ça ne devrait pas poser de problèmes, au contraire, c'est une protection qui évite qu'un contenu externe ne se glisse au sein d'une page. C'est le principe du CSP (et encore, il n'est pas assez strict ici).

Si tu veux plus de détails, voici le script qui fait l'appel :

(function() {
    var e = function() {
            var a = window.navigator.userAgent.match(/Chrome\/([0-9]+)/);
            return a ? parseInt(a[1], 10) : 0
        },
        f = function(a) {
            return !!document.currentScript && (-1 != document.currentScript.src.indexOf("?" + a) || -1 != document.currentScript.src.indexOf("&" + a))
        },
        g = f("loadGamesSDK") ? "/cast_game_sender.js" : "/cast_sender.js",
        h = f("loadCastFramework") || f("loadCastApplicationFramework"),
        k = function() {
            return "function" == typeof window.__onGCastApiAvailable ? window.__onGCastApiAvailable : null
        },
        l = ["boadgeojelhgndaghljhdicfkmllpafd",
            "dliochdbjfkdbacpmhlcpmleaejidimm", "enhhojjnijigcajfphajepfemndkmdlo", "fmfcbgogabcbclcofgocippekhfcmgfj"
        ],
        m = ["pkedcjkdefgpdelpbcmbmeomcjbeemfm", "fjhoaacokmgbjemoflkofnenfaiekifl"],
        n = 50 <= e() ? m.concat(l) : l.concat(m),
        p = function(a, c) {
            var b = new XMLHttpRequest;
            b.onreadystatechange = function() {
                4 == b.readyState && 200 == b.status && c(!0)
            };
            b.onerror = function() {
                c(!1)
            };
            try {
                b.open("GET", a, !0), b.send()
            } catch (d) {
                c(!1)
            }
        },
        t = function(a) {
            if (a >= n.length) q();
            else {
                var c = n[a],
                    b = "chrome-extension://" + c + g;
                0 <= l.indexOf(c) ? p(b, function(d) {
                    d ?
                        (window.chrome.cast = window.chrome.cast || {}, window.chrome.cast.extensionId = c, r(b, q)) : t(a + 1)
                }) : r(b, function() {
                    t(a + 1)
                })
            }
        },
        r = function(a, c, b) {
            var d = document.createElement("script");
            d.onerror = c;
            b && (d.onload = b);
            d.src = a;
            (document.head || document.documentElement).appendChild(d)
        },
        u = function(a) {
            return 0 <= window.navigator.userAgent.indexOf(a)
        },
        q = function() {
            var a = k();
            a && a(!1, "No cast extension found")
        },
        v = function() {
            if (h) {
                var a = 2,
                    c = k(),
                    b = function() {
                        a--;
                        0 == a && c && c(!0)
                    };
                window.__onGCastApiAvailable = b;
                r("//www.gstatic.com/cast/sdk/libs/sender/1.0/cast_framework.js",
                    q, b)
            }
        };
    a: {
        if (u("CriOS")) {
            var w = window.__gCrWeb && window.__gCrWeb.message && window.__gCrWeb.message.invokeOnHost;
            if (w) {
                v();
                w({
                    command: "cast.sender.init"
                });
                break a
            }
        }
        if (!window.chrome || u("Edge")) q();
        else if (v(), u("Android") && u("Chrome/") && window.navigator.presentation) {
            var x = "",
                y = e();
            55 <= y ? x = "55" : 50 <= y && (x = "50");
            r("//www.gstatic.com/eureka/clank" + x + g, q)
        } else t(0)
    };
})();

À titre personnel mais aussi professionnel, je trouve dangereux que des développeurs se permettent de faire des appels externes vers des machines d'autres entreprises (jquery, googlefonts, ...) car ça ouvre des brèches de sécurité gigantesques (c'est pire que les SDK jamais mis à jour). C'est déjà limite que Synology s'autorise le droit d’incorporer du contenu en direct provenant de leurs serveurs (blob: https://*.synology.com https://www.synology.cn/). Ils ont peut être prévu d'ajouter de la pub plus tard ...

Lien vers le commentaire
Partager sur d’autres sites

En fait Chrome me dit qu'il y a un script non authentifié, si je ne valide pas le chargement de ce script non authentifié, la lecture vidéo ne fonctionne pas.

La connexion n'est plus considéré comme sécurisée par Chrome (et on peut le comprendre)

Outre le fait que c'est limite en terme de sécu d'inclure des sources hors site, il y a également un bug de ma fenêtre ? non ?

Lien vers le commentaire
Partager sur d’autres sites

Je viens de tester avec chrome dans une VM (pour ne pas pourrir ma machine avec), je n'ai pas d'alerte CSP, pourtant je l'ai avec Firefox :question:

Mais dans tous les cas, la vidéo fonctionne avec Chrome et Firefox.

Par contre les nouvelles infos que tu donnes veulent dire autre chose

Il y a 4 heures, djo113 a dit :

La connexion n'est plus considéré comme sécurisée par Chrome (et on peut le comprendre)

Pas de lien entre le CSP et le fait que la connexion ne soit plus sécurisée (le CSP bloque), vérifie plutôt que tu n'as pas un souci de certificat (si tu es en https) ou de plugins chrome. Ça peut aussi venir d'une interception TLS de ton antivirus ou autre.

Test avec un autre navigateur (firefox)

Lien vers le commentaire
Partager sur d’autres sites

J'ai mis en pj l'image

quand je clique sur charger les scripts à risque ça recharge la page, et là qd je lance la vidéo ça fonctionne.

par contre Chrome considère que la connexion n'est plus sécurisée (et c'est normal).

Sinon, j'ai un certificat let's Encrypte.

 

script-a-risque.png

par contre qd je clique sur lire une vidéo depuis File Station, là j'ai pas de problème.

Je n'ai pas ce problème sur Firefox.

J'ai trouvé autre chose qui peut peut être aider dans la console développeur de Chrome :

3VM3273:7 Mixed Content: The page at 'https://mon.acces.syno/?launchApp=SYNO.SDS.VideoStation.AppInstance&SynoToken=WBNeHDyxwDEio#!Home/N4IgbglgJgpg9iAXKaSDsAWATADgDQgAuAC2ckYiAOosIpLowDOLEASqNS5AE4B9VIgCMAZgCs6gJwEuEAEbzG84sqhIADAF8bQA' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://mon.acces.syno/webapi/entry.cgi?format=hls&stream_id=%225ecb5990b7a9dcdd5e70e54cb_tNnLCscK%22&api=SYNO.VideoStation2.Streaming&version=1&method=stream&_sid=%22LBu667ipWVh910100%22&SynoToken=WBNeHEio&fragment_id=%2200000%22'. This request has been blocked; the content must be served over HTTPS.

Lien vers le commentaire
Partager sur d’autres sites

Ah! c'est autre chose, tu ne dois pas être en "full https"

Je n'ai aucune erreur de contenu non sécurisé chez moi avec Chrome (profil propre, aucun plugin) ou Firefox (profil qui a des années avec plein d'extensions) et comme ça fonctionne bien avec Firefox chez toi, c'est que le problème vient de ta version de Chrome.

Ma réponse serait donc d'utiliser Firefox et de laisser tomber Chrome (pas que pour ce problème mais c'est un autre débat ...), ou éventuellement de supprimer Chrome+ton profil pour repartir sur une version "propre".

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

Allez hop, 1 an et demi, un beau candidat au topic du déterrage de post, mais c'est le seul sujet qui traite des symptômes que j'ai rencontrés hier, et ayant pu résoudre le souci, j'ai pensé que ça pourrait être utile à quelqu'un d'autre.
Aucun changement de certificat récemment, rien non plus dans mes reverse proxy, et je me suis retrouvé avec un problème similaire à celui évoqué plus haut.
Dans mon cas la console de chrome disait entre gros que j'essayais de faire l'https sur de l'http (ce qui est le cas avec le reverse proxy).
En faisant pointer vers le port personnalisé HTTPS de VideoStation au lieu du port HTTP, le problème a été contourné.

A noter que j'obtenais un résultat similaire avec Edge, lui ne me prévenait de rien mais la lecture de la video ne s'enclenchait pas.
Pas pu tester avec Firefox car pas installé.

Si ça peut aider quelqu'un...

Modifié par shadowking
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.