From f43da4c8ba76b808a5d5d2524437bcafef6b818c Mon Sep 17 00:00:00 2001
From: JubaAzul <118773284+JubaAzul@users.noreply.github.com>
Date: Wed, 15 Jan 2025 09:07:56 -0500
Subject: [PATCH] =?UTF-8?q?Risques=20s=C3=A9curit=C3=A9=20dangerouslySetIn?=
=?UTF-8?q?nerHTML()=20Fixes=20#192?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../templates/AnswerIcon.test.tsx | 5 ++--
.../GiftTemplate/GIFTTemplatePreview.tsx | 3 +-
.../MultipleChoiceQuestion.tsx | 5 ++--
.../NumericalQuestion/NumericalQuestion.tsx | 3 +-
.../ShortAnswerQuestion.tsx | 3 +-
.../TrueFalseQuestion/TrueFalseQuestion.tsx | 3 +-
package-lock.json | 28 +++++++++++++++++++
package.json | 5 ++++
8 files changed, 47 insertions(+), 8 deletions(-)
create mode 100644 package-lock.json
create mode 100644 package.json
diff --git a/client/src/__tests__/components/GiftTemplate/templates/AnswerIcon.test.tsx b/client/src/__tests__/components/GiftTemplate/templates/AnswerIcon.test.tsx
index b053976..36fcfa8 100644
--- a/client/src/__tests__/components/GiftTemplate/templates/AnswerIcon.test.tsx
+++ b/client/src/__tests__/components/GiftTemplate/templates/AnswerIcon.test.tsx
@@ -2,10 +2,11 @@ import React from 'react';
import { render } from '@testing-library/react';
import '@testing-library/jest-dom';
import AnswerIcon from '../../../../components/GiftTemplate/templates/AnswerIcon';
+import DOMPurify from 'dompurify';
describe('AnswerIcon', () => {
test('renders correct icon when correct is true', () => {
- const { container } = render(
);
+ const { container } = render();
const svgElement = container.querySelector('svg');
expect(svgElement).toBeInTheDocument();
@@ -20,7 +21,7 @@ describe('AnswerIcon', () => {
});
test('renders incorrect icon when correct is false', () => {
- const { container } = render();
+ const { container } = render();
const svgElement = container.querySelector('svg');
expect(svgElement).toBeInTheDocument();
diff --git a/client/src/components/GiftTemplate/GIFTTemplatePreview.tsx b/client/src/components/GiftTemplate/GIFTTemplatePreview.tsx
index 4202b80..51dbd3f 100644
--- a/client/src/components/GiftTemplate/GIFTTemplatePreview.tsx
+++ b/client/src/components/GiftTemplate/GIFTTemplatePreview.tsx
@@ -3,6 +3,7 @@ import React, { useEffect, useState } from 'react';
import Template, { ErrorTemplate } from './templates';
import { parse } from 'gift-pegjs';
import './styles.css';
+import DOMPurify from 'dompurify';
interface GIFTTemplatePreviewProps {
questions: string[];
@@ -73,7 +74,7 @@ const GIFTTemplatePreview: React.FC = ({
{error}
) : isPreviewReady ? (
) : (
Chargement de la prévisualisation...
diff --git a/client/src/components/Questions/MultipleChoiceQuestion/MultipleChoiceQuestion.tsx b/client/src/components/Questions/MultipleChoiceQuestion/MultipleChoiceQuestion.tsx
index 5f0e57d..4957d11 100644
--- a/client/src/components/Questions/MultipleChoiceQuestion/MultipleChoiceQuestion.tsx
+++ b/client/src/components/Questions/MultipleChoiceQuestion/MultipleChoiceQuestion.tsx
@@ -4,6 +4,7 @@ import '../questionStyle.css';
import { Button } from '@mui/material';
import textType, { formatLatex } from '../../GiftTemplate/templates/TextType';
import { TextFormat } from '../../GiftTemplate/templates/types';
+import DOMPurify from 'dompurify';
// import Latex from 'react-latex';
type Choices = {
@@ -39,7 +40,7 @@ const MultipleChoiceQuestion: React.FC = (props) => {
return (
{choices.map((choice, i) => {
@@ -56,7 +57,7 @@ const MultipleChoiceQuestion: React.FC
= (props) => {
(choice.isCorrect ? '✅' : '❌')}
{alphabet[i]}
{choice.feedback && showAnswer && (
diff --git a/client/src/components/Questions/NumericalQuestion/NumericalQuestion.tsx b/client/src/components/Questions/NumericalQuestion/NumericalQuestion.tsx
index 449e4c7..7a9cec7 100644
--- a/client/src/components/Questions/NumericalQuestion/NumericalQuestion.tsx
+++ b/client/src/components/Questions/NumericalQuestion/NumericalQuestion.tsx
@@ -4,6 +4,7 @@ import '../questionStyle.css';
import { Button, TextField } from '@mui/material';
import textType from '../../GiftTemplate/templates/TextType';
import { TextFormat } from '../../GiftTemplate/templates/types';
+import DOMPurify from 'dompurify';
type CorrectAnswer = {
numberHigh?: number;
@@ -34,7 +35,7 @@ const NumericalQuestion: React.FC = (props) => {
return (
{showAnswer ? (
<>
diff --git a/client/src/components/Questions/ShortAnswerQuestion/ShortAnswerQuestion.tsx b/client/src/components/Questions/ShortAnswerQuestion/ShortAnswerQuestion.tsx
index 3f134d6..28639c4 100644
--- a/client/src/components/Questions/ShortAnswerQuestion/ShortAnswerQuestion.tsx
+++ b/client/src/components/Questions/ShortAnswerQuestion/ShortAnswerQuestion.tsx
@@ -4,6 +4,7 @@ import '../questionStyle.css';
import { Button, TextField } from '@mui/material';
import textType from '../../GiftTemplate/templates/TextType';
import { TextFormat } from '../../GiftTemplate/templates/types';
+import DOMPurify from 'dompurify';
type Choices = {
feedback: { format: string; text: string } | null;
@@ -28,7 +29,7 @@ const ShortAnswerQuestion: React.FC
= (props) => {
return (
{showAnswer ? (
<>
diff --git a/client/src/components/Questions/TrueFalseQuestion/TrueFalseQuestion.tsx b/client/src/components/Questions/TrueFalseQuestion/TrueFalseQuestion.tsx
index 4597d6f..18b7038 100644
--- a/client/src/components/Questions/TrueFalseQuestion/TrueFalseQuestion.tsx
+++ b/client/src/components/Questions/TrueFalseQuestion/TrueFalseQuestion.tsx
@@ -4,6 +4,7 @@ import '../questionStyle.css';
import { Button } from '@mui/material';
import textType from '../../GiftTemplate/templates/TextType';
import { TextFormat } from '../../GiftTemplate/templates/types';
+import DOMPurify from 'dompurify';
interface Props {
questionContent: TextFormat;
@@ -27,7 +28,7 @@ const TrueFalseQuestion: React.FC
= (props) => {
return (