私はBackbone.jsアプリケーションを構築していますが、Backbone.jsを使用しているときにXSSのHTMLエスケープを処理するにはどうすればよいのでしょうか。Backbone.jsとXSS/HTMLエスケープ
正式なBackbone.jsのドキュメントのでは、データはエスケープされません。 RESTサーバーを使用する場合
"><script>alert('xss');</script>
:このデータは、TODO項目をレンダリングするために、テンプレートに使用されるので、次のテキストを(上記のリンクで再生することができる)を入力してJavascriptコードを実行することが可能ですストレージバックエンドとして、このXSSはすべてのユーザーに永続的です。
この問題をどうやって解決しますか?
私の考えは、サーバー上のデータをエスケープすることで、返されたデータはテンプレートで使用するのが安全です。エスケープされていないデータがレンダリングされないように常にwait: true
を使用する必要がありますか?編集するには、エスケープされていないデータを持つ別の属性を追加してください。これを使用して.val()
を使用してテキストフィールドを埋めることができますか?
または、テンプレートをレンダリングする前に、クライアント上のデータをエスケープしないでください。
モデルのエスケープ機能はどうですか? http://backbonejs.org/#Model-escape – eveevans
例が修正されたようです。 –