@kotyのブログ

PythonとかAWSとか勉強会のこととかを、田舎者SEがつづります。記事のライセンスは"CC BY"でお願いします。

第8回「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 読書会 参加記録

nseg.connpass.com

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の例がやたら出てくる。謎。

次回は年明けです。

nseg.connpass.com