セキュリティ対策
信頼境界を明確にする。
原則として信頼境界の所で入力検証する。
あちこちで場当たり的に入力検証しない。
不正な(または冗長な)文字コードをエラーとする。
第4回 UTF-8の冗長なエンコード https://gihyo.jp/admin/serial/01/charcode/0004
第5回 不正なバイト列の埋め込み https://gihyo.jp/admin/serial/01/charcode/0005
第6回 先行バイトの埋め込み https://gihyo.jp/admin/serial/01/charcode/0006
iframe のアクセス制御のため、X-Frame-Options ヘッダを適切に設定する。(クリックジャッキング対策)
https://www.jpcert.or.jp/tips/2010/wr103601.html
CORS (Cross-Origin Resource Sharing, オリジン間リソース共有)を(必要に応じて)適切に設定する。
https://developer.mozilla.org/ja/docs/Web/HTTP/CORS
不当なインジェクションをされないようにする。
文字列などは事前チェックをする。(信頼境界で行われている前提)
エスケープ状態と境界を明確にする。正しい場所で、正しくエスケープ、アンエスケープする。あちこちで場当たり的にやらない。
エスケープ漏れ、アンエスケープ漏れ、二重エスケープ、二重アンエスケープにならないようにする。
SQLではパラメータクエリを使う。原則としてSQLの文字列組み立てに入力値を混ぜない。
想定が困難な文字シーケンスでインジェクションされる可能性がある。