私が持っているコードは:
<input type="text" name="some_name" value="<?php echo CHtml::encode($str); ?>" />
$ strは入力データです。 'CHtml :: encode()'は、特殊文字をHTMLエンティティにエンコードするYiiの方法です。これはバイパスできますか?
入力の前後に二重引用符を付けないと、壊れる可能性があります。しかし、二重引用符で囲むだけでは問題が解決しないとは思いません。
attribute value(double-quoted)state 内では、リテラルの二重引用符"
文字のみ(U + 0022 )その状態からの適切な終了を許可します。これは 文字のファジングの結果、HTML属性の二重引用符と構文的に同等 の結果によってもバックアップされます。
したがって、緩和手法によってこれらのリテラル文字が削除された場合、引用された属性値からエスケープしようとするXSSから安全です。
ただし、一部の属性値は、on…
イベント属性、スタイル属性、またはjavascript:
で始まるURI属性などの特別な方法で解釈されることに注意してください。したがって、XSSの防止は、構文だけでなくセマンティクスの問題でもあります。