出力エンコーディング
出力エンコーディング とは何ですか?
出力エンコーディング信頼できないデータを HTML・JavaScript・URL・SQL・シェルなど特定の出力コンテキストで安全な形式に変換し、コードとして実行されるのを防ぐ処理。
出力エンコーディング(エスケープ)は、データが別のインタプリタにレンダリングされる際に発生するインジェクション系脆弱性への中心的な対策です。HTML 本体には HTML エンティティエンコード、HTML 属性には属性エンコード、JS 文字列リテラルには JavaScript Unicode エスケープ、URL にはパーセントエンコード、SQL やシェルにはパラメータ化 API といったように、コンテキストごとに規則が異なります。データが信頼境界を越えて下流のインタプリタに渡る正確な位置で、適切なエンコーダを用いて適用する必要があります。入力検証やパラメータ化クエリと組み合わせることで、XSS・HTML インジェクション・コマンドインジェクション・CSV インジェクションに対する中心的な防御策となります。
● 例
- 01
ユーザーコメントをページ本文に描画する前に HTML エンティティエンコードして、反射型 XSS を防ぐ。
- 02
サーバーレンダリングのテンプレート内で、JS 文字列リテラルに挿入する値を JavaScript エンコードする。
● よくある質問
出力エンコーディング とは何ですか?
信頼できないデータを HTML・JavaScript・URL・SQL・シェルなど特定の出力コンテキストで安全な形式に変換し、コードとして実行されるのを防ぐ処理。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。
出力エンコーディング とはどういう意味ですか?
信頼できないデータを HTML・JavaScript・URL・SQL・シェルなど特定の出力コンテキストで安全な形式に変換し、コードとして実行されるのを防ぐ処理。
出力エンコーディング からどのように防御しますか?
出力エンコーディング に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
出力エンコーディング の別名は何ですか?
一般的な別名: 出力エスケープ, コンテキストエスケープ。