1
0
Эх сурвалжийг харах

fix(requests): disallow `VM-` headers for security reason

Gerald 8 жил өмнө
parent
commit
44cf2570a7

+ 1 - 0
.gitignore

@@ -1,6 +1,7 @@
 /dist/
 /dist/
 node_modules/
 node_modules/
 /*.zip
 /*.zip
+/*.tar.gz
 /*.nex
 /*.nex
 /*.crx
 /*.crx
 /*.log
 /*.log

+ 4 - 1
src/background/utils/requests.js

@@ -73,8 +73,11 @@ export function httpRequest(details, cb) {
     xhr.setRequestHeader('VM-Verify', details.id);
     xhr.setRequestHeader('VM-Verify', details.id);
     if (details.headers) {
     if (details.headers) {
       Object.keys(details.headers).forEach(key => {
       Object.keys(details.headers).forEach(key => {
+        const lowerKey = key.toLowerCase();
+        // `VM-` headers are reserved
+        if (lowerKey.startsWith('vm-')) return;
         xhr.setRequestHeader(
         xhr.setRequestHeader(
-          specialHeaders.includes(key.toLowerCase()) ? `VM-${key}` : key,
+          specialHeaders.includes(lowerKey) ? `VM-${key}` : key,
           details.headers[key],
           details.headers[key],
         );
         );
       });
       });

+ 10 - 9
src/injected.js

@@ -287,20 +287,21 @@
       if (res.type === 'loadend') delete comm.requests[req.id];
       if (res.type === 'loadend') delete comm.requests[req.id];
     }
     }
     function start(req, id) {
     function start(req, id) {
+      const { details } = req;
       const data = {
       const data = {
         id,
         id,
-        method: req.details.method,
-        url: req.details.url,
-        data: req.details.data,
-        // async: !req.details.synchronous,
-        user: req.details.user,
-        password: req.details.password,
-        headers: req.details.headers,
-        overrideMimeType: req.details.overrideMimeType,
+        method: details.method,
+        url: details.url,
+        data: details.data,
+        // async: !details.synchronous,
+        user: details.user,
+        password: details.password,
+        headers: details.headers,
+        overrideMimeType: details.overrideMimeType,
       };
       };
       req.id = id;
       req.id = id;
       comm.requests[id] = req;
       comm.requests[id] = req;
-      if (comm.includes(['arraybuffer', 'blob'], req.details.responseType)) {
+      if (comm.includes(['arraybuffer', 'blob'], details.responseType)) {
         data.responseType = 'blob';
         data.responseType = 'blob';
       }
       }
       comm.post({ cmd: 'HttpRequest', data });
       comm.post({ cmd: 'HttpRequest', data });