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