リソースの解放と入力の安全性
ライブラリの更新で、例外の種類・ストリームの扱い・既定の上限が変わることがあります。更新した箇所と、ライブラリを通る入出力について確かめます。
リソースの解放
- ストリーム(
InputStream・OutputStream)、接続、クライアントのオブジェクトを、正常時も異常時も閉じている(try-with-resourcesなど) - ライブラリが一時ファイルを作る場合、保存先・権限(Windows の ACL)・処理後の削除を確かめる
- 接続プール・スレッドプールを使う場合、停止時に解放される
- 大きな要求・応答を、上限なしにメモリへ読み込んでいない
- 異常な入力を繰り返しても、メモリ・CPU・スレッド・一時ファイルが増え続けない
入力の安全性
- 外部からの入力(パラメーター・ヘッダー・本文・ファイル)を検証している
- XML を扱う場合、DOCTYPE・外部エンティティ・外部 DTD を含む入力が拒否される
- 圧縮された入力を扱う場合、展開後の大きさと処理時間に上限がある
- 例外の応答やエラー画面に、スタックトレース・ローカルのパス・認証情報・入力値をそのまま出していない
- ファイル名を受け取る場合、パスの差し込み(
..)・予約名・絶対パスを拒否する
設定が無いことを「安全」とみなさないでください。既定値はバージョンによって変わることがあります。バージョンページの「設定を見直す」と「更新だけでは塞がらない脆弱性」を合わせて見てください。