これはもっと基本的な質問かもしれませんが、自分のJavaScriptページのデータベースにアクセスするコントローラからJSON文字列にアクセスしています。私は{JSENCODE(jsonString)}がXSSの脆弱性に注意するようにするため、ユーザーはJSON内のオブジェクトの名前を指定します。XSSの脆弱性を回避するには一重引用符で囲みますが、ユーザーは入力にそれらを使用できますか?
JSENCODEを実行しているときに、シングルクォートがエスケープされます。それからJSON.parse()しようとすると、\ 'は無効な文字としてエラーをスローします。 \ 'を\で置き換えるとエラーは発生しませんが、一重引用符(アポストロフィで使用)ではなくオブジェクト名のリストに\'として表示されます。
XSSの脆弱性を回避しながら、ユーザーがこれらのオブジェクトの名前に一重引用符を使用できるようにするには、どのような行動をとるべきでしょうか?
まあ、jsonStringはJSONのシリアル化されたリストですので、JavaScriptから解析する必要があります。 {!JSENCODE(jsonString)}を実行するだけで、文字列を取得できます。 –
@TylerDahle - それを二重にエンコードしないでください。ちょうどそれを使用します。 – Quentin
セキュリティチェックでXSSの脆弱性が指摘されましたが、私は考えています...一重引用符が二重引用符で囲まれていると、実際には脆弱ですか?もしそうでなければ、JSENCODEの必要はありません。 –