GRADUATION
注入の穴を、ひとつの原則で見られるようになりました。
XSS の三種・SQL インジェクション・コマンドインジェクション・SSTI・パストラバーサル。ばらばらに見える穴が、実は「データが、別の言語のコードとして解釈される」という一つの形だと分かりました。そして直しも一つ——データとコードを、混ぜない。
おつかれさまでした。
持ち帰るもの
- 注入は、境界の崩壊信頼できない入力が、HTML・SQL・シェル・テンプレートの「文法」として解釈された瞬間に穴が開きます。どの層でも形は同じです。
- パラメータ化が本命SQL もコマンドも、データを「文字列連結」で文に混ぜるのをやめ、パラメータ(プレースホルダ・引数配列)として渡せば、注入は原理的に消えます。
- 出力は文脈でエスケープXSS は出す先(HTML本文・属性・JS・URL)ごとに正しいエスケープが違います。文脈を意識した出力が、注入を止めます。
次にやるといいこと
- 次は「アクセス制御と認可の壊れ方」です。旗艦で触れた IDOR を、権限モデルとして体系的に扱います。
- 注入の直し(パラメータ化・文脈別エスケープ・許可リスト)は、以降のすべての実装レビューで効きます。sec-audit や sec-securecoding で再会します。