diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 34d3eefb73..e861608bad 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -17,8 +17,10 @@
"classnames": "^2.5.1",
"date-fns": "^4.1.0",
"date-fns-tz": "^3.2.0",
+ "dompurify": "^3.3.1",
"flag-icons": "^7.2.3",
"formik": "^2.4.6",
+ "http-proxy-middleware": "^2.0.6",
"js-cookie": "^3.0.5",
"md5": "^2.3.0",
"prop-types": "^15.8.1",
@@ -55,7 +57,6 @@
"eslint-plugin-jsx-a11y": "^6.10.0",
"eslint-plugin-react": "^7.37.1",
"eslint-plugin-react-hooks": "^4.6.2",
- "http-proxy-middleware": "^2.0.6",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"prettier": "^3.3.3",
@@ -5277,9 +5278,10 @@
"dev": true
},
"node_modules/@types/trusted-types": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz",
- "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g=="
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "license": "MIT"
},
"node_modules/@types/unist": {
"version": "2.0.7",
@@ -8673,6 +8675,15 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/dompurify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz",
+ "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==",
+ "license": "(MPL-2.0 OR Apache-2.0)",
+ "optionalDependencies": {
+ "@types/trusted-types": "^2.0.7"
+ }
+ },
"node_modules/domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
@@ -28224,9 +28235,9 @@
"dev": true
},
"@types/trusted-types": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz",
- "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g=="
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="
},
"@types/unist": {
"version": "2.0.7",
@@ -30672,6 +30683,14 @@
"domelementtype": "^2.2.0"
}
},
+ "dompurify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz",
+ "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==",
+ "requires": {
+ "@types/trusted-types": "^2.0.7"
+ }
+ },
"domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index 735c9a9087..84efc07217 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -12,6 +12,7 @@
"classnames": "^2.5.1",
"date-fns": "^4.1.0",
"date-fns-tz": "^3.2.0",
+ "dompurify": "^3.3.1",
"flag-icons": "^7.2.3",
"formik": "^2.4.6",
"http-proxy-middleware": "^2.0.6",
diff --git a/frontend/src/components/jobs/notification/NotificationsList.jsx b/frontend/src/components/jobs/notification/NotificationsList.jsx
index 05030c68ae..e02a44cedb 100644
--- a/frontend/src/components/jobs/notification/NotificationsList.jsx
+++ b/frontend/src/components/jobs/notification/NotificationsList.jsx
@@ -1,5 +1,6 @@
import React from "react";
import PropTypes from "prop-types";
+import DOMPurify from "dompurify";
import {
ListGroup,
ListGroupItem,
@@ -43,7 +44,9 @@ export default function NotificationsList({ notifications, refetchFn }) {