13日の予定が参加者ひとりのため延期になっていた。参加者は3名だった。
トピックとしては、「メール送信の問題」と「ファイルアクセスにまつわる問題」。
メール送信の問題
ヘッダーに不正な改行コードを入れられたときに発生する。
不勉強なもので今まで意識したことがなかった。 今どきは自前のメールサーバーは持たず、SendGridやAWSのSESを始めとするマネージドサービスを使うのが自分の周りでは普通になっている。その際送信時のプロトコルもSMTPではなくweb apiを呼んでマネージドサービスの向こう側にSMTPがある。
Djangoだと
- settingsのEMAIL_BACKENDを使う方式(mandrillなんかがそう)
- 各マネージドサービスオリジナルのsdkを経由してweb apiを呼ぶ方式(SendGrid、AWS SESなんかがそう)
がある。
前者の場合はドキュメント Sending email | Django documentation | Django を読むと対策はされているようだ。後者はSMTPではないため気にする必要はなさそう。そしてマネージドサービス側にはそんな脆弱性が無いと信じるしか無い。。
ちょっと蛇足だけど、Sending email | Django documentation | Djangoを見るにDjangoビルトインのEMAIL_BACKENDがあることを知った。これは単体テストやローカルでのテスト時に使えそう。
ファイルアクセスにまつわる問題
Djangoに関してはurls.pyで扱ってくれるURLについては気にする必要はなさそう。Djangoとディレクトリトラバーサル - 偏った言語信者の垂れ流しを見るにPythonの一般論としてos.path.joinは気をつける必要がある。
nginxは既定では autoindex off。参考:Module ngx_http_autoindex_module。なんだけど、Djangoのstaticファイルをnginxでhostする方法について検索するとautoindex onの例がやたら出てくる。謎。
次回は年明けです。