Skip to content

Commit 747bc3a

Browse files
committed
add regex safe value for css xsite scripting
1 parent 8003efd commit 747bc3a

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
@@ -21,7 +21,7 @@ import {
2121
handleFootballMatchPage,
2222
handleFootballTablesPage,
2323
} from './handler.sportDataPage.web';
24-
import { addQueryParamsToABTests } from './lib/add-queryparams-to-abtests';
24+
import { getABTestsFromQueryParams } from './lib/add-queryparams-to-abtests';
2525
import { getContentFromURLMiddleware } from './lib/get-content-from-url';
2626

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

0 commit comments

Comments
 (0)