説明
リクエストのパラメーターを.get()で取得すると、値がない場合はNoneになることがあります。確認せずにメソッドを呼び出したり長さを求めたりすると、例外が発生します。
想定される影響
- 必須パラメーターの省略によって、サービスのエラーやサービス拒否につながる可能性があります。
- デバッグ設定と組み合わさると、内部情報が漏えいする可能性があります。
対処方法
.get()の結果を使う前にis not Noneで確認するか、適切な既定値を指定してください。- 必須のリクエスト値は、フレームワークの検証機能で宣言してください。
例
リクエストを処理する関数内部の抜粋です。
変更前
python
filename = request.POST.get("filename")
return filename.count(".")
変更後
python
filename = request.POST.get("filename")
if filename is not None:
return filename.count(".")
return 0
説明:
- 変更前:
request.POST.get()などの戻り値は、値がない場合にNoneになり得ます。確認せずにメソッド呼び出し、属性参照、長さの計算に使うと例外が発生します。 - 変更後:
.get()の結果を確認してから使います。適切な既定値を指定する方法もあります。