文字コードのセキュリティ対策

連載:本当は怖い文字コードの話|gihyo.jp … 技術評論社
を読んだメモ。

UTF-7対策(for IE)

HTTPレスポンスヘッダ(apache/IIS) を正しく設定。

Content-Type: text/html; charset=hogehoge

hogehogeは正しく。


metaタグでの指定は、タイトル部などにutf-7を埋め込まれる可能性がある。

US-ASCII対策

HTTPレスポンスヘッダの設定。

冗長なUTF-8対策

UTF-8の検査や他の符号化形式への変換をライブラリやフレームワークに任せ,「自前でUTF-8を処理しない」

不正なバイト列対策

「危険な文字列を検出」ではなく「安全な文字列を生成」するようにする。

  • 出力しても安全な要素として<div> <a> <p>などを定めておく
  • <a> の属性としては href,titleのみを許可する
  • href の属性値としてhttp://およびhttps://で始まる文字列のみ許可する

しっかし、大変だな。