Bénéfice secondaire

J’ai commencé à tester l’admin de la future 2.15 en enlevant le filtre unsafe-eval pour les scripts, vu que je suis en train de supprimer tout le javascript inline du code, et je suis tombé sur une erreur de typo, signalée par un rapport du système Content-Security-Policy (CSP).

En effet, j’avais ce code javascript chargé sur le tableau de bord :

// Posts
  if ($('#dashboard-main #icons p a[href="posts.php"]').length) {
    // Icon exists on dashboard
    // First pass
    dotclear.dbPostsCount();
    // Then fired every 600 seconds (10 minutes)
    dotclear.dbPostsCount_Timer = setInterval(dotclear.dbCommentsPost, 600 * 1000);
  }

Et je ne comprenais pas pourquoi le système m’indiquait une erreur à la ligne 7, puisqu’il n’y avait pas d’évaluation javascript à cet endroit. Et puis finalement j’ai compris que la variable dotclear.dbCommentsPost n’existait pas et que par conséquent, javascript cherchait à l’évaluer, ce que j’avais interdit via les CSP.

{
    "hash": "f0944a9e1253d09db2b12dfcb7d15cfd",
    "document-uri": "https://admin.dc2.local/index.php",
    "referrer": "https://admin.dc2.local/",
    "violated-directive": "script-src",
    "effective-directive": "script-src",
    "original-policy": "default-src 'self' https://dc2.local/ dc2.local ; script-src 'self' dc2.local ; style-src 'self' 'unsafe-inline' dc2.local ; img-src 'self' data: http://media.dotaddict.org blob: https://localhost/ dc2.local ; child-src * ; report-uri https://admin.dc2.local/csp_report.php",
    "disposition": "enforce",
    "blocked-uri": "eval",
    "line-number": 205,
    "column-number": 35,
    "source-file": "https://admin.dc2.local/js/_index.js?v=2.15-dev",
    "status-code": 0,
    "script-sample": ""
}

Une fois la bonne variable en place, dotclear.dbPostsCount, ça va beaucoup mieux :

// Posts
  if ($('#dashboard-main #icons p a[href="posts.php"]').length) {
    // Icon exists on dashboard
    // First pass
    dotclear.dbPostsCount();
    // Then fired every 600 seconds (10 minutes)
    dotclear.dbPostsCount_Timer = setInterval(dotclear.dbPostsCount, 600 * 1000);
  }

Du coup, virer le 'unsafe-eval' de la directive script des CSP permet aussi de détecter les variables inconnues.

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/14185

Haut de page