Просмотр исходного кода

fix: sanitize optionsFilter in addFilterCondition to prevent regex injection

Shun Miyazawa 7 месяцев назад
Родитель
Сommit
8751c15ee3
1 измененных файлов с 4 добавлено и 5 удалено
  1. 4 5
      packages/remark-lsx/src/server/routes/list-pages/index.ts

+ 4 - 5
packages/remark-lsx/src/server/routes/list-pages/index.ts

@@ -33,17 +33,16 @@ function addFilterCondition(
   }
   }
 
 
   const pagePathForRegexp = escapeStringRegexp(addTrailingSlash(pagePath));
   const pagePathForRegexp = escapeStringRegexp(addTrailingSlash(pagePath));
-  const sanitizedFilter = escapeStringRegexp(optionsFilter);
 
 
   let filterPath: RegExp;
   let filterPath: RegExp;
   try {
   try {
     if (optionsFilter.charAt(0) === '^') {
     if (optionsFilter.charAt(0) === '^') {
       // move '^' to the first of path
       // move '^' to the first of path
-      filterPath = new RegExp(
-        `^${pagePathForRegexp}${optionsFilter.slice(1, sanitizedFilter.length)}`,
-      );
+      const escapedFilter = escapeStringRegexp(optionsFilter.slice(1));
+      filterPath = new RegExp(`^${pagePathForRegexp}${escapedFilter}`);
     } else {
     } else {
-      filterPath = new RegExp(`^${pagePathForRegexp}.*${sanitizedFilter}`);
+      const escapedFilter = escapeStringRegexp(optionsFilter);
+      filterPath = new RegExp(`^${pagePathForRegexp}.*${escapedFilter}`);
     }
     }
   } catch (err) {
   } catch (err) {
     throw createError(400, err);
     throw createError(400, err);