From bf22d90231d06d061f765f62fb584257a2cfc5e4 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Wed, 31 May 2023 18:34:29 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=82=B5=E3=83=8B=E3=82=BF=E3=82=A4?= =?UTF-8?q?=E3=82=B6=E3=83=BC=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-webapp/src/util/sanitize.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/ecs/jskult-webapp/src/util/sanitize.py b/ecs/jskult-webapp/src/util/sanitize.py index 781dd593..3e052717 100644 --- a/ecs/jskult-webapp/src/util/sanitize.py +++ b/ecs/jskult-webapp/src/util/sanitize.py @@ -4,11 +4,18 @@ import html def sanitize(cls): - class SanitizedClass(cls): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - for prop_name, prop_value in self.__dict__.items(): - if isinstance(prop_value, str): - sanitized_value = html.escape(prop_value, quote=True) - setattr(self, prop_name, sanitized_value) - return SanitizedClass + original_init = cls.__init__ + + def new_init(self, *args, **kwargs): + # オリジナルの __init__ メソッドを呼び出してインスタンスを初期化 + sanitized_kwargs = {**kwargs} + for key, value in kwargs.items(): + if isinstance(value, str): + # 文字列の場合はサニタイズ処理を行う(例:HTMLタグをエスケープ) + sanitized_value = html.escape(value, quote=True) + sanitized_kwargs[key] = sanitized_value + original_init(self, *args, **sanitized_kwargs) + + cls.__init__ = new_init + + return cls