From ab29deed14e0b6d266fc5a90b8f46950ce096431 Mon Sep 17 00:00:00 2001 From: Yiyu He Date: Sun, 15 Apr 2018 01:10:41 +0800 Subject: [PATCH] fix: set context data more safely (#14) --- lib/assets_context.js | 11 ++--------- test/assets.test.js | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/lib/assets_context.js b/lib/assets_context.js index 4b8fd18..e8387eb 100644 --- a/lib/assets_context.js +++ b/lib/assets_context.js @@ -48,7 +48,7 @@ class Assets { getContext(data) { data = safeStringify(data || this.assetsContext); let ret = `\n`; - ret += ``; + ret += ``; return ret; } @@ -82,16 +82,9 @@ function scriptTpl({ url }) { return ``; } -const escapeMap = { - '<': '<', - '>': '>', -}; function safeStringify(data) { if (!data) return ''; - return JSON.stringify(data) - .replace(/[<>]/g, function(ch) { - return escapeMap[ch]; - }); + return new Buffer(encodeURIComponent(JSON.stringify(data))).toString('base64'); } function normalizePublicPath(publicPath) { diff --git a/test/assets.test.js b/test/assets.test.js index 979e2d0..7d7f36c 100644 --- a/test/assets.test.js +++ b/test/assets.test.js @@ -29,7 +29,7 @@ describe('test/assets.test.js', () => { .get('/') .expect(/
<\/div>/) .expect(/<\/link>/) - .expect(/style="display:none">{"data":1}<\/div>/) + .expect(/style="display:none">JTdCJTIyZGF0YSUyMiUzQTElN0Q=<\/div>/) .expect(/