社内で話題になったのでまとめる。Djangoとディレクトリトラバーサルについて。検証したバージョンは1.2.1。 ユーザの入力値などを利用してファイルパスなどを生成したりする場合やファイルをアップロードさせる場合には特に注意する。 DjangoのテンプレートやストレージAPIでは、ディレクトリトラバーサルを避けるような工夫がある。 os.path.joinに注意 よくあるパターンで、 "../" がパスに入っていると、意図しないファイルを参照するようになっていないかどうか。Windowsの場合には、パスのセパレータはバックスラッシュも使えることに注意する。 危なそうな場合は、 django.utils._os.safe_join などを利用する。 >>> BASE_DIR = '/home/tokibito/templates/' >>> import os >>> os.path.joi