- From: Scott Bassett <sbassett@wikimedia.org>
- Date: Mon, 1 Jul 2019 11:06:55 -0500
- To: kysymysteke <kysymysteke@protonmail.com>
- Cc: "public-webappsec@w3.org" <public-webappsec@w3.org>
- Message-ID: <CAGHy=chc5i0654Zcfk8LiRfi7o=ipeSh=2cKEfrXNd8+71Zonw@mail.gmail.com>
Hello-
I'm not sure you need to wrap the cat statement with echo -n. This command:
$ cat test.js | sha256sum | xxd -r -p | base64
yields this hash:
agzfwYZgNhXfv33CO487iMvaQ6rs8Yo7m7B9skxHe6U=
and this command (from the w3c.org documentation):
$ cat test.js | openssl dgst -sha256 -binary | openssl enc -base64
yields the same hash:
agzfwYZgNhXfv33CO487iMvaQ6rs8Yo7m7B9skxHe6U=
where the contents of test.js are your snippet:
var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//piwik.xo.tc/";
_paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['setSiteId', 2]);
var d=document, g=d.createElement('script'),
s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true;
g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();
On Sun, Jun 30, 2019 at 1:48 PM kysymysteke <kysymysteke@protonmail.com>
wrote:
> Hello
>
> You have instructions here:
>
> https://www.w3.org/TR/CSP2/#script-src-hash-usage
>
> which says to use this command
>
> echo -n "alert('Hello, world.');" | openssl dgst -sha256 -binary | openssl enc -base64
>
> But that example is almost worthless, because almost no one will have a one line of JavaScript.
>
> Please make instructions on how to take the hash of a multiline JavaScript. For example if I have this in a file:
>
> <script type="text/javascript">
> var _paq = _paq || [];
> _paq.push(['trackPageView']);
> _paq.push(['enableLinkTracking']);
> (function() {
> var u="//piwik.xo.tc/";
> _paq.push(['setTrackerUrl', u+'piwik.php']);
> _paq.push(['setSiteId', 2]);
> var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
> g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
> })();</script>
>
> Source: https://xo.tc/calculating-a-base64-encoded-sha256-sum-of-inline-scripts-for-your-content-security-policy.html
>
> How do I take the hash of that script? I have no idea, even though I have been trying to search for answers.
>
> If I try to do this: "echo -n $(cat FILE_WITH_THE_SCRIPT) | sha256sum | xxd -r -p | base64
>
> it gives the wrong hash.
>
> How do I get the hash of multiline JavaScript easily?
>
> I would appreciate it if you could improve the instructions.
>
--
Scott Bassett
sbassett@wikimedia.org
Received on Tuesday, 2 July 2019 07:54:22 UTC