Webセキュリティ入門:HTTP・Cookie・脆弱性
エラーメッセージから内部を読む
この回でやること
エラーメッセージは利用者への案内であると同時に、内部を教える窓にもなります。
- 読む 約 5 分
- 最後にクイズ 1 問
このレッスンで学ぶこと
エラーメッセージは、利用者に次の行動を示す案内であると同時に、外から内部を覗く窓にもなります。何を返し、何を記録に回すかの線引きを確かめます。
読み終えるころには、利用者に返す情報と、記録に残す情報の分け方を説明できます。
エラーは情報を持っている
想定外の入力を送ったとき、返ってくるエラーには内部の事情が混ざりがちです。
- 例外の内容と、コードのどこで起きたか
- ファイルの置き場所
- 使っているフレームワークとその版
- データベースのエラー文と、そこに含まれる表や列の名前
どれも「次にどこを触ればよいか」を教えます。特にデータベースのエラー文は、内部の構造をそのまま伝えます。
差でも分かる
前に学んだとおり、文言そのものだけが情報ではありません。
同じ「エラーです」でも、返答の長さが違う、状態コードが違う、返るまでの時間が違う。どれもそこで何かが違ったことを示します。
隠したい区別ほど、揃える
実在するかどうか、権限があるかどうか。区別を知られたくないものは、返し方まで含めて同じに揃えます。 文言だけ揃えても、コードや時間で分かります。
分けて考える
エラーが起きたときに扱う情報は、2つに分けます。
利用者に返すもの。 何が起きたか、次に何をすればよいか。「入力の形式が正しくありません」「時間をおいて再度お試しください」。どこで壊れたかは要りません。
記録に残すもの。 例外の内容、位置、入力の要約、識別のための番号。これは運営側だけが見ます。
利用者には番号だけを見せておくと、問い合わせのときに記録と突き合わせられます。内部を出さずに、追跡はできる形になります。
記録に残しすぎない
記録も無条件ではありません。合言葉、トークン、カード情報のようなものを記録に流すと、記録そのものが漏れて困るものになります。残す前に落とします。