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.
1 De Bernard -
Bon, j’ai pas bien compris -à part l’appel à une variable inexistante, mais, en lisant tes lignes de code, j’ai appris….
https://localhost/
: je pensais que ce n’était pas “possible”. Ben Le Hollandais volant m’a indiqué que si…