6
安全でないHTMLを含む可能性のある文字列があります。 <script>
を<script>
HTMLの文字列をエスケープするにはどうすればよいですか?
に変更すると、文字列のタグをエスケープしたいのですが、ダーツでどうすればいいですか?
安全でないHTMLを含む可能性のある文字列があります。 <script>
を<script>
HTMLの文字列をエスケープするにはどうすればよいですか?
に変更すると、文字列のタグをエスケープしたいのですが、ダーツでどうすればいいですか?
HtmlEscapedart:convert
から使用してください。
import 'dart:convert' show HtmlEscape;
void main() {
var unsafe = 'Hello <script>world</script>';
var sanitizer = const HtmlEscape();
print(sanitizer.convert(unsafe));
}
上記のアプリのプリント:
Hello <script>world</script>
デフォルトの動作は、アポストロフィをエスケープすることです、大なり/小なり、引用符、およびスラッシュ。
エスケープするものを制御する場合は、HtmlEscapeModeの新しいHtmlEscape
を作成できます。例えば
、唯一の大なり/小なりとスラッシュエスケープし、これを試してみてください。
var sanitizer = const HtmlEscape(HtmlEscapeMode.ELEMENT);
を忘れないでください、彼らはHTMLに入る前に、ダートは自動的に文字列をサニタイズ。したがって、HTMLスクリプトを手動でエスケープする必要はありません。安全でない文字列でelement.setInnerHtml
を呼び出すと、それは消毒されます。
逆に、HTMLエンティティを含む文字列を解析し、クリーンな文字列を取得しますか?実装されていないようです:https://code.google.com/p/dart/source/browse/branches/1.6/dart/sdk/lib/convert/html_escape.dart –
** Element.setInnerHtmlがサニタイズするという事実デフォルトでは一般的に、出力をエスケープする必要はありません。**サニタイザーはXSSからあなたを守りますが、出力をエスケープするのは忘れてしまいますが、依然として不正な形式の出力が生成されます。正しい動作のためにはまだエスケープする必要があります。消毒剤は安全網である。 また注意する価値があります。サニタイザーをバリデーターに置き換えることができます。バリデーターは、出力を静かにマングリングするのではなくエラーを引き起こします。 a)プログラムのエラーを警告し、b)エスケープを忘れていることを明白にしないため、これが望ましいかもしれません。 – ngroot