From 0f1b5810fa95add9a3b5d4d9cb243e02a0407d6f Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Sat, 18 Dec 2021 13:27:30 +0100 Subject: [PATCH] HPKP: Improved tokenization (#3278) --- components/prism-hpkp.js | 14 ++++---------- components/prism-hpkp.min.js | 2 +- tests/languages/hpkp/max-age_feature.test | 13 +++++++++++++ tests/languages/hpkp/safe_maxage_feature.test | 12 ------------ tests/languages/hpkp/sha256_pin_feature.test | 6 +++++- tests/languages/hpkp/unsafe_maxage_feature.test | 12 ------------ 6 files changed, 23 insertions(+), 36 deletions(-) create mode 100644 tests/languages/hpkp/max-age_feature.test delete mode 100644 tests/languages/hpkp/safe_maxage_feature.test delete mode 100644 tests/languages/hpkp/unsafe_maxage_feature.test diff --git a/components/prism-hpkp.js b/components/prism-hpkp.js index 1db02643d2..e3f15b5064 100644 --- a/components/prism-hpkp.js +++ b/components/prism-hpkp.js @@ -6,15 +6,9 @@ Prism.languages.hpkp = { 'directive': { - pattern: /\b(?:(?:includeSubDomains|preload|strict)(?: |;)|pin-sha256="[a-zA-Z\d+=/]+"|(?:max-age|report-uri)=|report-to )/, - alias: 'keyword' + pattern: /\b(?:includeSubDomains|max-age|pin-sha256|preload|report-to|report-uri|strict)(?=[\s;=]|$)/i, + alias: 'property' }, - 'safe': { - pattern: /\b\d{7,}\b/, - alias: 'selector' - }, - 'unsafe': { - pattern: /\b\d{1,6}\b/, - alias: 'function' - } + 'operator': /=/, + 'punctuation': /;/ }; diff --git a/components/prism-hpkp.min.js b/components/prism-hpkp.min.js index 099dfdea14..50ca60cc19 100644 --- a/components/prism-hpkp.min.js +++ b/components/prism-hpkp.min.js @@ -1 +1 @@ -Prism.languages.hpkp={directive:{pattern:/\b(?:(?:includeSubDomains|preload|strict)(?: |;)|pin-sha256="[a-zA-Z\d+=/]+"|(?:max-age|report-uri)=|report-to )/,alias:"keyword"},safe:{pattern:/\b\d{7,}\b/,alias:"selector"},unsafe:{pattern:/\b\d{1,6}\b/,alias:"function"}}; \ No newline at end of file +Prism.languages.hpkp={directive:{pattern:/\b(?:includeSubDomains|max-age|pin-sha256|preload|report-to|report-uri|strict)(?=[\s;=]|$)/i,alias:"property"},operator:/=/,punctuation:/;/}; \ No newline at end of file diff --git a/tests/languages/hpkp/max-age_feature.test b/tests/languages/hpkp/max-age_feature.test new file mode 100644 index 0000000000..9b1ae76390 --- /dev/null +++ b/tests/languages/hpkp/max-age_feature.test @@ -0,0 +1,13 @@ +max-age=123; +max-age=31536000 + +---------------------------------------------------- + +[ + ["directive", "max-age"], ["operator", "="], "123", ["punctuation", ";"], + ["directive", "max-age"], ["operator", "="], "31536000" +] + +---------------------------------------------------- + +Checks for HPKP with an "unsafe" max-age. diff --git a/tests/languages/hpkp/safe_maxage_feature.test b/tests/languages/hpkp/safe_maxage_feature.test deleted file mode 100644 index 169f23cd5e..0000000000 --- a/tests/languages/hpkp/safe_maxage_feature.test +++ /dev/null @@ -1,12 +0,0 @@ -max-age=31536000 - ----------------------------------------------------- - -[ - ["directive", "max-age="], - ["safe", "31536000"] -] - ----------------------------------------------------- - -Checks for HPKP with a "safe" max-age. diff --git a/tests/languages/hpkp/sha256_pin_feature.test b/tests/languages/hpkp/sha256_pin_feature.test index 45adf1c878..e9b46c7f34 100644 --- a/tests/languages/hpkp/sha256_pin_feature.test +++ b/tests/languages/hpkp/sha256_pin_feature.test @@ -3,7 +3,11 @@ pin-sha256="EpOpN/ahUF6jhWShDUdy+NvvtaGcu5F7qM6+x2mfkh4=" ---------------------------------------------------- [ - ["directive", "pin-sha256=\"EpOpN/ahUF6jhWShDUdy+NvvtaGcu5F7qM6+x2mfkh4=\""] + ["directive", "pin-sha256"], + ["operator", "="], + "\"EpOpN/ahUF6jhWShDUdy+NvvtaGcu5F7qM6+x2mfkh4", + ["operator", "="], + "\"" ] ---------------------------------------------------- diff --git a/tests/languages/hpkp/unsafe_maxage_feature.test b/tests/languages/hpkp/unsafe_maxage_feature.test deleted file mode 100644 index 4f1ff96158..0000000000 --- a/tests/languages/hpkp/unsafe_maxage_feature.test +++ /dev/null @@ -1,12 +0,0 @@ -max-age=123 - ----------------------------------------------------- - -[ - ["directive", "max-age="], - ["unsafe", "123"] -] - ----------------------------------------------------- - -Checks for HPKP with an "unsafe" max-age.