Skip to content

Commit 3f908f3

Browse files
committed
add regex safe value for css xsite scripting
1 parent 3051ace commit 3f908f3

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

dotcom-rendering/src/server/lib/add-queryparams-to-abtests.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
11
import type { Handler } from 'express';
22
import { validateAsFEArticle } from '../../../src/model/validate';
33

4-
export const addQueryParamsToABTests: Handler = async (req, res, next) => {
4+
export const getABTestsFromQueryParams: Handler = async (req, res, next) => {
55
try {
66
const frontendData = validateAsFEArticle(req.body);
77

88
const { config } = frontendData;
99

1010
const queryParamsAb = req.query;
1111

12+
const SAFE_KEY = /^[a-zA-Z0-9_-]{1,100}$/;
13+
const SAFE_VALUE = /^[a-zA-Z0-9_-]{1,40}$/;
14+
1215
const filteredQuery: Record<string, string> = {};
1316
for (const [key, value] of Object.entries(queryParamsAb)) {
1417
if (typeof value == 'string' && key.startsWith('ab-')) {
1518
const testId = key.replace(/^ab-/, '');
16-
filteredQuery[testId] = value;
19+
if (SAFE_VALUE.test(value) && SAFE_KEY.test(key)) {
20+
filteredQuery[testId] = value;
21+
}
1722
}
1823
}
1924

dotcom-rendering/src/server/server.dev.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {
2020
handleFootballMatchPage,
2121
handleFootballTablesPage,
2222
} from './handler.sportDataPage.web';
23-
import { addQueryParamsToABTests } from './lib/add-queryparams-to-abtests';
23+
import { getABTestsFromQueryParams } from './lib/add-queryparams-to-abtests';
2424
import { getContentFromURLMiddleware } from './lib/get-content-from-url';
2525

2626
/** article URLs contain a part that looks like “2022/nov/25” */
@@ -90,7 +90,7 @@ const renderer = Router();
9090
// populates req.body with the content data from a production
9191
// URL if req.params.url is present
9292
renderer.use(getContentFromURLMiddleware);
93-
renderer.use(addQueryParamsToABTests);
93+
renderer.use(getABTestsFromQueryParams);
9494
renderer.get('/Article/*url', handleArticle);
9595
renderer.get('/Interactive/*url', handleInteractive);
9696
renderer.get('/Blocks/*url', handleBlocks);

0 commit comments

Comments
 (0)