djangoproject.jphttp://djangoproject.jp/weblog/2016-12-03T05:23:37+00:00An open source content management platform.TokyoDjangoMeetup#9を開催しています2016-12-03T05:23:37+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/tokyo-django-meetup-9/<p>今日 <a href="https://django.connpass.com/event/44749/">TokyoDjangoMeetup#9</a>を開催しています。</p>
<p>皆さんの自己紹介とやること。</p>
<ul>
<li>nakaishi: DjangoでBPで仕事をして。BitbucketにあげてるDjangoチュートリアルを最新に追随する。ドキュメント内でタブ切り替えでDjangoのバージョンを変えて見れるようにしたい。Djangoの相談とかあればして欲しい</li>
<li>fujimoto: <a href="https://twitter.com/fujimisakari">https://twitter.com/fujimisakari</a> Djangoで仕事で開発している。仕事でコードレビューを良くしている。Pythonのレビューとかもできるので相談して欲しい。ReactのAdventカレンダーを書かないといけない。Pythonのアドベントカレンダーも書かないといけない。PyPIに登録したactionlogというものについて書きたい</li>
<li>salexkidd: Python、Djangoをやっています。今日は仕事をする</li>
<li>akihironemoto: 転向してエンジニアになるのでPython、Djangoの勉強する。スクールでPythonのメンターとかもやっている。</li>
<li>aoino: DjangoどころかPythonも初心者なのでチュートリアルから頑張る</li>
<li>t02uk: 社内でアプリを作ってるから他の人も見てみたい。スクラップから何かを作ってみたい。</li>
<li>matsunaga: スタートアップだけどDjangoやってる人が周りにいない。Djangoのアドベントカレンダーも建てた。ちゃんとsettings.pyの使い方とかを見直してプロダクトを考え直したい</li>
<li>yamada: 学生さん。初心者で、チュートリアルをやっていく</li>
<li>soutarou: アルバイトでDjangoを使ってる。英語を勉強するアプリのバックエンド。Reactがフロント。1週間で作ったプロダクトの</li>
<li>inagakisan: 社会人2年目でSE。Pythonに興味あった。つまっちゃったところを聴きたい。</li>
<li>jack: Djangoの勉強にきた。フリーランスでやってる。C系をやっている。機械学習とか接点あったら知りたい</li>
<li>Massa: 転職TipsアドベントカレンダーとDjangoアドベントカレンダーを書く</li>
</ul>DjangoGirlsTokyoが開催されます2015-06-24T01:50:36+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/django-girls-tokyo-announcement/<p>7月26日にDjangoGirlsTokyoが開催されます <a href="http://djangogirls.org/tokyo/" target="_blank">http://djangogirls.org/tokyo/</a></p>
<p>参加登録は <a href="http://pyladies-tokyo.connpass.com/event/16555/" target="_blank">connpassのページ</a> からどうぞ。</p>
<p></p>
<h2>DjangoGirlsって?</h2>
<p>これからWebサイトの作り方を学びたい、プログラミングを学びたいと思っている女性のみなさん、初心者向けの1-Dayワークショップが開催されます。DjangoGirlsは国際的なイベントで、世界各国でも地域別DjangoGirlsが開催されています。</p>
<p></p>
<h2>DjangoGirlsをサポートしたい!</h2>
<p>Djangoに詳しい方はぜひコーチの応募を。応募は <a href="mailto:tokyo@djangogirls.org">tokyo@djangogirls.org</a> に連絡すればOKだそうです。</p>
<p>企業の方は<a href="http://djangogirls-org.connpass.com/event/16546/"> connpass のページ</a>からスポンサーに応募してみてはいかがでしょうか。</p>
<p> </p>
<p> </p>
<p> </p>最新ドキュメント翻訳の参加方法ページを作成しました2015-05-30T07:56:46+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/improved-trans-page/<p><a href="/weblog/survey-for-18-translation-result/" target="_blank">アンケートの結果</a> で翻訳への参加方法が分かりにくいという意見が多かったので、翻訳に参加する方法をまとめました。</p>
<ul>
<li><a href="/howtojoin-transifex/" target="_blank">アカウント登録、チームへの参加リクエスト方法</a></li>
<li><a href="/howtotranslate/" target="_blank">Transifexでの翻訳方法</a></li>
</ul>
<p>ここでの最新ドキュメントの翻訳はいずれ <a href="https://docs.djangoproject.com/">djangoproject.com</a> から配信される予定です。</p>
<p> </p>
<p>もし分かりにくい、間違えてるなどの意見があれば教えてください。ブログへのコメント、<a href="https://twitter.com/django_ja/" target="_blank">@django_ja</a>へのメンション、master@djangoproject.jpへのメールで受け付けています。</p>
<p>また、<a href="https://django.connpass.com/">TokyoDjangoMeetup</a> というイベントを定期開催しているので、そこで疑問を聞いてくれても答えれます。</p>Django1.8ドキュメント翻訳についてのアンケート結果2015-05-30T02:39:50+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/survey-for-18-translation-result/<p>以前お願いした <a href="/weblog/survey-for-18-translation/" target="_blank">Django1.8ドキュメント翻訳のアンケート </a>の結果を報告します。</p>
<h2>アンケートの結果</h2>
<p>以下が結果のサマリです。</p>
<ul>
<li>18人の人がアンケートに回答</li>
<li>「Django1.8ドキュメントの日本語翻訳は必要」=>16人</li>
<li>「翻訳がある嬉しい項目」=>「モデル」が1番多く、次が「チュートリアル」</li>
<li>「翻訳に足りない情報」=>「参加方法がわからない」「誰が翻訳しているかわからない」が同率で1番多い</li>
<li>「翻訳の欲しい程度」=>「イントロ・チュートリアル」「トピック」「リファレンス」がほぼ同率</li>
</ul>
<p>結果のすべては <a href="https://docs.google.com/forms/d/1WB3wT2g5iGjROZgABZVi_i2AuObixWzmq52w7VJSg0M/viewanalytics">Django1.8ドキュメント翻訳アンケート</a> から見れます。</p>
<p>結果をもとに djangoproject.jp の改善を行っていきます。<a href="/translate/"> 翻訳への参加方法</a> に情報を追加します。</p>Django1.8ドキュメント翻訳についてのアンケート2015-04-29T05:02:51+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/survey-for-18-translation/<p>Django1.8ドキュメント翻訳に際してのアンケートです。</p>
<p>日本語での情報が必要とされているページはどれか、djangoproject.jp上に足りてない情報は何なのかの調査です。結果は djangoproject.jp 上で公開します。翻訳する人のモチベーションになればと思っています。</p>
<p>次回TokyoDjangoMeetupの予定日<strong> 5月30日まで</strong>、受け付けます。アンケートは以下のGoogleFormから投稿してください。</p>
<p><a href="http://goo.gl/forms/sfCDzAFmnb">http://goo.gl/forms/sfCDzAFmnb</a></p>Django1.8リリースのお知らせ2015-04-01T23:44:50+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/dajngo-1-8/<p>Django1.8が<a class="reference external" href="https://code.djangoproject.com/wiki/Version1.8Roadmap">スケジュールどおり</a>リリースされました</p>
<p>このバージョンは long-term support (LTS) のリリースです。セキュリティ、データロスの修正が少なくとも向こう3年行われます。</p>
<p><a class="reference external" href="https://docs.djangoproject.com/en/1.8/releases/1.8">リリースノート</a>に内容は書かれていますが、メジャーな変更のハイライトはこちら</p>
<ul class="simple">
<li><a class="reference external" href="https://docs.djangoproject.com/en/1.8/releases/1.8/#multiple-template-engines">複数テンプレートエンジンmultiple template engines</a>のネイティブでのサポート</li>
<li>ORMからの<a class="reference external" href="https://docs.djangoproject.com/en/1.8/releases/1.8/#query-expressions-conditional-expressions-and-database-functions">複雑なSQLのサポート</a></li>
<li><a class="reference external" href="https://docs.djangoproject.com/en/1.8/releases/1.8/#model-meta-api">Model._meta</a>への正式なAPIのサポート</li>
<li><a class="reference external" href="https://docs.djangoproject.com/en/1.8/releases/1.8/#new-postgresql-specific-functionality">contrib.postgres</a>でのPostgreSQL用機能の提供</li>
</ul>
<p><a href="https://www.djangoproject.com/download/">ダウンロードページ</a>か<a class="reference external" href="https://pypi.python.org/pypi/Django/1.8">the Python Package Index</a>からDjango1.8をダウンロードしてください。このリリースのPGP key IDは Tim Graham: 1E8ABDC773EDE252 です。</p>
<p>Django1.8のリリースにより、Django1.6シリーズのサポートは終了します。 1.6.11 が最後のリリースになります。Django 1.7のセキュリティアップデートはDjango1.9のリリースまで続けられます。(<a class="reference external" href="https://code.djangoproject.com/wiki/Version1.9Roadmap">2015年10月予定</a>)。 Django 1.4 (前回の LTS) は向こう6ヶ月間(2015年10月1日まで)セキュリティアップデートが行われます。ユーザーは Django 1.8 LTS に移行してください。</p>Django 1.7.1 リリース2014-10-24T09:46:07+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/django_1_7_1/<div class="entry-body">
<div class="entry-content">
<p>Django 1.7.1 がリリースされました。バグフィックスリリースとしてです。</p>
<p>Django1.4.16, 1.5.11, 1.6.8, 1.7.1がリリースされています。 Django 1.5 はすでにサポートの対象外ですが、今度こその最後としてバグフィックスがリリースされています。</p>
<ul class="simple">
<li><a class="reference external" href="https://docs.djangoproject.com/en/1.7/releases/1.4.16/">Django 1.4.16 リリースノート</a></li>
<li><a class="reference external" href="https://docs.djangoproject.com/en/1.7/releases/1.5.11/">Django 1.5.11 リリースノート</a></li>
<li><a class="reference external" href="https://docs.djangoproject.com/en/1.7/releases/1.6.8/">Django 1.6.8 リリースノート</a></li>
<li><a class="reference external" href="https://docs.djangoproject.com/en/1.7/releases/1.7.1/">Django 1.7.1 リリースノート</a></li>
</ul>
<p></p>
</div>
</div>Django 1.7 リリース2014-09-03T09:44:43+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/django_1_7/<div class="entry-body">
<div class="entry-content">
<p>1年あまりの開発期間の末、本日 Django1.7 が正式にリリースされました。</p>
<p>いつものように <a class="reference external" href="https://docs.djangoproject.com/en/1.7/releases/1.7/">リリースノート</a> に 1.7 でカバーされている全てが詳細に書かれています。 メジャーなもののハイライトは以下:</p>
<ul class="simple">
<li><a class="reference external" href="https://docs.djangoproject.com/en/1.7/topics/migrations/">ビルドインのマイグレーションシステム</a> 。 <a class="reference external" href="https://docs.djangoproject.com/en/1.7/topics/migrations/#upgrading-from-south">South からのアップグレード</a> も可能です</li>
<li><a class="reference external" href="https://docs.djangoproject.com/en/1.7/ref/applications/">Django のアプリケーションシステムのリファクタリング</a> 。Django のアプリケーションが models ファイルに依存しなくなり、コンフィグと Django 起動時のコード実行を指定できます。</li>
<li>マイグレーションに対応するためにモデルフィールド (Field) の API を改善。 将来的に複合キーを簡単に追加できるようにもする予定です。</li>
<li>カスタムマネージャーとクエリセットクラスの改善。逆方向へのリレーションの探索からManagerを使えるようになり、カスタムの QuerySet クラスから Manager クラスを生成できるようになりました。</li>
<li>拡張可能なシステムチェックフレームワーク。開発者がエラー検出時に役立ちます。</li>
</ul>
<p>これらはまだ氷山の一角にすぎません。 最新の Django 1.7 は <a class="reference external" href="https://www.djangoproject.com/download/">ダウンロードページ</a> か <a class="reference external" href="https://pypi.python.org/pypi/Django/1.7">PyPI</a> から入手できます。</p>
<div class="section" id="id4">
<h1>バグフィックスリリース</h1>
<p>Django 1.7 と同時に Django 1.4.15, Django 1.5.10, Django 1.6.7 がバグフィックスのためリリースされました。 Django 1.7 がリリースされたことで Django 1.5 はサポートの対象外となります。 Django 1.5.10 が Django 1.5 シリーズ最後のリリースになります。Django 1.6 は Django 1.8 のリリースまでサポートされます。 Django 1.4 は LTS なので 2015 年 5 月までサポートされます。</p>
<p><a class="reference external" href="https://www.djangoproject.com/weblog/2014/sep/02/release-17-final/">https://www.djangoproject.com/weblog/2014/sep/02/release-17-final/</a></p>
</div>
</div>
</div>セキュリティリリースのお知らせ (1.6.6)2014-08-24T09:43:50+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/released_django1_6_6/<div class="entry-body">
<div class="entry-content">
<p>Django 1.4.14, Django 1.5.9, Django 1.6.6, Django 1.7 rc 3 がリリースされました。 この記事は <a class="reference external" href="https://www.djangoproject.com/weblog/2014/aug/20/security/">https://www.djangoproject.com/weblog/2014/aug/20/security/</a> を 元にしたものです。</p>
<p>このリリースでは reverse() が内部のURLを生成する際の問題、 サービス停止を引き起こすファイルアップロード、 remote-user ミドルウェアの潜在的なセッションハイジャックの問題、 Admin インタフェースでの情報漏えいの問題を修正しています。 全ての Django ユーザーにできるだけ早いアップグレードが推奨されています。</p>
<div class="section" id="url-reverse-cve-2014-0480">
<h1>他ホストへのURLを reverse() が生成し得る問題 (CVE-2014-0480)</h1>
<p>Django は django.core.urlresolvers.reverse というヘルパー関数を持っており、 view へのリファレンスかURLパターン名からURLを生成するために使われます。 特定条件下で reverse() がスキーム相対 (scheme-relative) な、他のホストへのURLを 生成する可能性がありました。 これは問題を知っている攻撃者に任意のサイトへのリンクを生成させる可能性があり、 フィッシングや他の問題を可能にします。</p>
<p>この修正のため、 reverse() の返り値が '//' で始まる場合は 2 つめのスラッシュが (%2F) で 置き換えられるようになりました。</p>
<p>訳注: 元のブログポストを見ると reverse() に '//' で始まる文字列を与えるだけで脆弱性になる ように読めますが、特定のURLパターンと一緒でないと起こりえません。ただその文字列が生成された場合に reverse() が特に何もフィルターせずにURLを返していた、というのがこの問題です。 例えば '(.+)/foo' のようなURLパターンがあった場合に、 このURLにマッチする条件 + '/example.com' という引数を与えると '//example.com/foo' というURLが生成されてしまいます。</p>
</div>
<div class="section" id="cve-2014-0481">
<h1>サービス停止を引き起こすファイルアップロード (CVE-2014-0481)</h1>
<p>デフォルトの挙動で Django のファイルアップロードシステムは、同じファイルパス、同じファイル名 でのファイルアップロードが会った際に、新しいユニークなファイル名を生成します。 ファイル名に対してアンダースコアと数字を末尾に付与して行い、数字は名前の衝突がなくなるまで 順に増やされていきます (_1, _2 など)。</p>
<p>攻撃者は同じ名前をもつ小さいファイルを大量にアップロードすることで、この順によるファイル名生成 の脆弱性を攻撃できます。この場合 Django は os.stat() を呼び出すことでファイル名を生成 しようとし、この数は増え続けます。 結果として、このように割合小さなサイズのファイルのアップロードにしてもパフォーマンスは極端に 低下します。</p>
<p>この修正のために、 Djangoのファイルアップロードシステムは順序の数値を使わないようになりました。 代わりに短い英数字の文字列が付与されます。</p>
</div>
<div class="section" id="remoteusermiddleware-cve-2014-0482">
<h1>RemoteUserMiddleware のセッションハイジャック (CVE-2014-0482)</h1>
<p>Django は REMOTE_USER ヘッダーを認証処理に使うミドルウェア django.contrib.auth.middleware.RemoteUserMiddleware と、認証バックエンド django.contrib.auth.backends.RemoteUserBackend を提供しています。</p>
<p>特定の条件下でこのミドルウェアとバックエンドを使用することで、あるユーザーが別ユーザーのセッション を受信し得るという問題がありました。 REMOTE_USER ヘッダーへの変更が、対応する logout/login アクションなしに起こった場合です。</p>
<p>この修正のためにミドルウェアは、脆弱性をつくようなログアウト以外での REMOTE_USER の 変更があった場合に、ログアウトとログインを強制するようになりました。</p>
</div>
<div class="section" id="admin-cve-2014-0483">
<h1>Admin でのクエリ操作によるデータ漏えい (CVE-2014-0483)</h1>
<p>Django の admin インタフェース django.contrib.admin は、関連するオブジェクトを ポップアップウィンドウで表示する機能を提供しています。 このメカニズムは、URLとクエリストリングに値を保持しておき、 表示したい関連モデルとリレーションを実装したフィールドを取得することで実装されていました。 これはパーミッションチェックをモデルクラス全体のレベルで行っていました。</p>
<p>しかしこのメカニズムは、特定フィールドが実際にモデル間のリレーションを扱うものかを チェックしていませんでした。 よって Admin インタフェースにアクセスでき、モデル構造と該当のURLに十分な理解があるユーザー は関連のないフィールドの値をポップアップ上に表示することができました。 アプリケーション開発者が意図していないようなフィールドも表示させれます。</p>
<p>この修正のため admin インタフェースは、通常のパーミッションチェックの追加として、 指定されたフィールドが admin に登録されたモデルのリレーションを扱うものかを確認するように なりました。</p>
</div>
</div>
</div>Django 1.7 リリース候補版 22014-07-27T09:43:05+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/django-1_7_rc_2/<div class="entry-body">
<div class="entry-content">
<p>Django 1.7 rc 2 が公開されました。 <a class="reference external" href="https://www.djangoproject.com/download/">ダウンロードページ</a></p>
<p>Django 1.7 にはビルドインのスキーママイグレーションフレームワーク、改良されたプロジェクトの検証ツール、アプリケーションロードの根本的な改善、カスタムのデータベースルックアップなどが含まれます。 これらは大きな変更のハイライトで、詳細は開発中の <a class="reference external" href="https://docs.djangoproject.com/en/dev/releases/1.7/">1.7 リリースノート</a> を参照してください。</p>
</div>
</div>Django 1.7 リリース候補版 12014-06-28T09:42:28+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/django-1_7_rc_1/<div class="entry-body">
<div class="entry-content">
<p>Django 1.7 rc 1 が公開されました。 <a class="reference external" href="https://www.djangoproject.com/download/">ダウンロードページ</a></p>
<p>Django 1.7 にはビルドインのスキーママイグレーションフレームワーク、改良されたプロジェクトの検証ツール、アプリケーションロードの根本的な改善、カスタムのデータベースルックアップなどが含まれます。 これらは大きな変更のハイライトで、詳細は開発中の <a class="reference external" href="https://docs.djangoproject.com/en/dev/releases/1.7/">1.7 リリースノート</a> を参照してください。</p>
</div>
</div>セキュリティリリースのお知らせ (Django 1.6.5)2014-06-01T09:41:42+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/django-1_6_5/<p>5月14日、Django開発チームが Django 1.4.13, 1.5.8, 1.6.5, 1.7 beta 4 をセキュリティリリースの一環としてリリースしました。これらは PyPI と <a class="reference external" href="https://www.djangoproject.com/download/">ダウンロードページ</a> から手に入ります</p>
<p>このリリースはキャッシュポイゾニングを引き起こす問題と、セーフリダイレクト時の正しくないバリデーションチェックの問題を対象にしています。これらの問題は多くのDjango利用者に影響があります。アップグレードが強く推奨されます。</p>
<p>詳細は以下を読んでください。</p>
<div class="section" id="cve-2014-1418">
<h1>キャッシュがプライベートデータを保存し、配信される問題 (CVE-2014-1418)</h1>
<p>特定の条件下において、 Django があるセッションに関するプライベートデータを保存し、そのデータを別セッションのリクエストに配信するおそれがあります。この問題は情報漏えいと、キャッシュポイゾニングを引き起こします。</p>
<p>Django のセッションを使っている場合、Djangoは Vary: Cookie ヘッダーを設定し、別セッション由来のデータをリクエストに配信しないようにしています。しかし、古いバージョンの Internet Explorer (Internet Explorer 6 か 7 が、WindowsXP か Windows Server 2003 上で動作している場合) では、 多くの content types と併せてこの Vary ヘッダーも扱えません。なので、 Django はリクエストが Internet Explorer 由来の場合にこのヘッダーを削除しようとしていました。</p>
<p>この問題を修正するため、この古い Internet Explorer 向けの特殊な動作は削除されました。Vary ヘッダーはレスポンスから消されることはもうありません。追加として、 Content-Disposition ヘッダー付きの Internet Explorer 由来のリクエストへの Cache-Control ヘッダーへの変更も、同様の問題を含むとして削除されました。</p>
</div>
<div class="section" id="url-cve-2014-3730">
<h1>特殊なURLがユーザーから指定された場合の、不正確なバリデーション (CVE-2014-3730)</h1>
<p>リダイレクト用のバリデーションが、いくつかのブラウザで許可される特殊なURLに対して正確に動作しませんでした。 これは安全でない、予期せぬURLへのリダイレクトを許可してしまいます。</p>
<p>Django はいくつかのケースにおいてユーザー入力に依存した「成功時の」リダイレクトを行います (例えば django.contrib.auth.views.login, django.contrib.comments や i18n) これらリダイレクトへのセキュリティチェック (django.util.http.is_safe_url()) は、 <a class="reference external" href="http://">http://</a>\djangoproject.com のような特殊なURLに対して正確なバリデートをしませんでした。これはいくつかのURLのパースが寛大なブラウザで許可されていたものです。</p>
<p>この問題を修正するために、 is_safe_url() は、これらの特殊なURLに対しても正常なバリデートを行うように修正されました。</p>
</div>バグフィックスリリースのお知らせ(Django1.6.4)2014-05-03T09:41:00+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/django1_6_4/<p>セキュリティリリースが出たばかりですが、functools.partialで作られたviewでreverse()を使った際のバグがあったようです。 それによってDjango 1.4.12,Django 1.5.7,Django 1.6.4,Django 1.7 beta 3がリリースされています。</p>セキュリティリリースのお知らせ(Django1.6.3)2014-04-22T09:40:02+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/released_django1_6_3/<p>本日、Django1.4.11, Django1.5.6, Django1.6.3, Django1.7 beta 2 が <a class="reference external" href="https://docs.djangoproject.com/en/dev/internals/security/">セキュリティプロセスの一環</a> としてリリースされました。 <a class="reference external" href="https://pypi.python.org/pypi/Django">PyPI</a> と <a class="reference external" href="https://www.djangoproject.com/download/">ダウンロードページ</a> から入手できます。</p>
<p>このリリースでは、予期しないコードが実行される問題、 CSRF を引き起こす問題、そしてMySQL型キャストの問題を対象にしています。 問題が全Djangoユーザーには影響するわけではありませんが、リスク回避のために可能な限り早くアップデートしてください。</p>
<p>問題の詳細は下記を参照してください。</p>
<div class="section" id="reverse">
<h1>reverse()により予期しないコードが実行される問題</h1>
<p>DjangoのURLの扱いは、view callableに対する正規表現マッピング(つまりURLs)をベースにしています。 Django内の処理ではリクエストされたURLを各正規表現のパターンにマッチさせて、実行させるviewを特定しています。</p>
<p>Djangoは上記の処理と逆のことをする django.core.urlresolvers.reverse() も提供しています。 reverse() 関数は view に関する情報をうけとり、viewを実行するためのURLを返します。 reverse() の返り値は常に現在のURLパターンを基本にしているので、アプリケーション開発者には reverse() の使用が推奨されています。これで開発者はURLsを変更しても他のコードを修正しなくて済むようになります。</p>
<p>reverse() への識別子としての引数は対象viewへのドット区切りのPythonパスで表されます。この場合Djangoは結果のURL生成のために、パスが指すモ ジュールをインポートします。このモジュールがimport時の副作用を含む場合、その副作用が実行されてしまいます。</p>
<p>なのでこれは攻撃者に予期しないコードの実行を許可してしまいます。以下を満たす場合です:</p>
<ol class="arabic simple">
<li>ユーザーインプット由来の値でURLが生成されるviewがある (クエリ文字列中の "next" パラメータで完了ページ(view)を指定している場合などが考えられます)</li>
<li>インポートによる副作用があるモジュールが、サーバー内に存在すると攻撃者に知られている</li>
</ol>
<p>修正のため、reverse()は、URLパターン内に列挙されているviewを含むパスのみを許可するよう修正されました。 このやり方でインポートすると指定したモジュールのみがインポートできるようになっています。</p>
</div>
<div class="section" id="csrf">
<h1>未ログインページのキャッシュによりCSRFトークンが漏れる問題</h1>
<p>Djangoはキャッシュフレームワークと、クロスサイトリクエストフォージェリ(CSRF)攻撃を防ぐシステムを提供しています。 CSRFプロテクションシステムは、ランダムな文字列をクッキーでクライアントに送り、その文字列が後にリクエストから返されることを基礎としています。この文字列はformからhidden valueとしてサーバーに返信されます。</p>
<p>キャッシュフレームワークは匿名(未ログイン)クライアントへのレスポンスをキャッシュするオプションを提供しています。</p>
<p>あるページヘの最初の匿名リクエストでクライアントがCSRFクッキーを持っていない場合、キャッシュフレームワークはCSRFクッキーをもキャッ シュしてしまい、他のCSRFクッキーを持たない匿名ユーザーへ同じ文字列を送信してしまいます。これは攻撃者に有効なCSRFクッキーを与えることにな り、クッキーへのチェックを回避する攻撃を引き起こします。</p>
<p>これの修正として、キャッシュフレームワークはこのようなレスポンスをキャッシュしないようになりました。手順は以下のようになります:</p>
<ol class="arabic simple">
<li>リクエストがクッキーを1つも送信しておらず</li>
<li>レスポンスが1つ以上のクッキーを送信しており、</li>
<li>Varyの場合はクッキーヘッダーがレスポンスに設定されており、レスポンスがキャッシュされていない場合。</li>
</ol></div>
<div class="section" id="mysql">
<h1>MySQL型キャストの問題</h1>
<p>MySQLデータベースは特定クエリにおいて'型キャスト'(typecast)するものとして知られています 。例えばstring値を含むテーブルに対してinteger値を基本にしたフィルターをした場合、MySQLは暗黙のうちにstringをintegerにし、結果を返します。</p>
<p>適切な型への変換が発生しない場合、クエリ自体に変更が入った場合と変わらないような予期しない結果が返ります。</p>
<p>Djangoのモデルフィールドクラスはそれぞれの型を考慮し、クエリ実行の前にデータベースレベルで正しい型に各クエリ引数を変更します。 しかし、以下3つのモデルフィールドは引数を正しく変換していませんでした:</p>
<pre class="literal-block">* FilePathField
* GenericIPAddressField
* IPAddrennField
</pre>
<p>この3フィールドはクエリ実行前に正しい型に引数を変更するよう修正されました。</p>
<p>さらに、カスタムモデルフィールドの開発者に対して適切な型への変換を提供するようドキュメントで注意書きが追加されました。 生SQLやSQLフラグメントを可能にするraw(), extra()クエリメソッドの利用者も、クエリ実行前にマニュアルで正しい型に変換するよう注意してください。</p>
<p>(原文は以下にあります。文章におかしなところがあればコメントか @hirokiky に連絡してください <a class="reference external" href="https://www.djangoproject.com/weblog/2014/apr/21/security/">https://www.djangoproject.com/weblog/2014/apr/21/security/</a>)</p>
<p>UbuntuのSecurityNoticeではこちら <a class="reference external" href="http://www.ubuntu.com/usn/usn-2169-1/">http://www.ubuntu.com/usn/usn-2169-1/</a></p>
</div>Django 1.7 beta 1 がリリースされました2014-03-21T09:38:30+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/django-17-beta-1/<div class="entry-body">
<div class="entry-content">
<p>Django 1.7 リリースの一環として、本日 Django 1.7 beta 1 がプレビュー/テスト用パッケ ージとしてリリースされました。 Django 1.7 での変更を試すことができます。</p>
<p>Django 1.7 では Django にいくつかの新機能が追加され、たくさんの改修が含まれています 。 ハイライトとしてはスキーママイグレーションフレームワークの取り込み、 一般的なエラーを発見、修正する新しいバリデーションツールの追加、 Django がアプリケーションを発見して読み込む方法の抜本的なリファクタリング、 カスタムデータベースルックアップの追加です。</p>
<p>詳細なドキュメントは、 <a class="reference external" href="https://docs.djangoproject.com/en/dev/releases/1.7/">開発中の 1.7 リリースノート</a> を参照してください。</p>
<p>普段のアルファ、ベータパッケージのように、これは製品で使うものではありません。 新機能を試してみたり、バグの発見と修正に協力 (<a class="reference external" href="https://code.djangoproject.com/newticket">issue トラッカー</a> での報告を) してくれる場合は、 <a class="reference external" href="https://www.djangoproject.com/download/">ダウンロードページ</a> から入手してください。 いつものように、 MD5 と SHA1 <a class="reference external" href="https://www.djangoproject.com/m/pgp/Django-1.7b1.checksum.txt">チェックサム</a> もあります。</p>
<p>Django 1.7 は現時点で新機能の追加はありません。beta 1 から 1.7 の最終リリースまでの1.7 ブランチでは、バグフィックスと翻訳の更新のみが受け付けられます。</p>
</div>
</div>Django1.6.2, 1.7a2がリリースされました2014-02-15T09:37:32+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/django162-17a2/<div class="entry-body">
<div class="entry-content">
<p>元記事: <a class="reference external" href="https://www.djangoproject.com/weblog/2014/feb/06/django-162-and-django-17a2-released/">https://www.djangoproject.com/weblog/2014/feb/06/django-162-and-django-17a2-released/</a></p>
<p>Django1.6.2が1.6シリーズのバクフィックスリリースとしてリリースされました。 Django1.7a2も1.7リリースの2番目のアルファ版としてリリースされました。</p>
<div class="section" id="django-1-6-2">
<h1>Django 1.6.2</h1>
<p>Django 1.6.2 はバグフィックスリリースとしては2つめのリリースです。すべてのバグはマイナーなバグフィックスで、リストは <a class="reference external" href="https://docs.djangoproject.com/en/1.6/releases/1.6.2/">Django 1.6.2 リリースノート</a> で参照してください。</p>
<p>全ユーザーは Django 1.6.2 へのアップグレードが推奨されます。pipでインストールするか、Django1.6.2を <a class="reference external" href="https://www.djangoproject.com/download/">ダウンロードページ</a> からダウンロードしてインストールしてください。 <a class="reference external" href="https://www.djangoproject.com/download/1.6.2/checksum/">チェックサム</a> も参照してください。</p>
</div>
<div class="section" id="django-1-7-alpha-2">
<h1>Django 1.7 alpha 2</h1>
<p>Django 1.7 alpha 2 はプレビュー/テスト用のリリースです。</p>
<p>Django1.7a2は、新しいシステムチェックフレームワークとアプリケーションのロード方法変更の間で生じた、悪い相互作用を修正するものです。 これによって1.7a1は降板になり、a2が最新版となりました。</p>
<p>Django1.7の新機能については開発中の <a class="reference external" href="https://docs.djangoproject.com/en/dev/releases/1.7/">1.7リリースノート</a> を参照してください。</p>
</div>
</div>
</div>Django 1.7 alpha 1 がリリースされました2014-01-27T09:36:30+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/django-17-alpha-1/<div class="entry-body">
<div class="entry-content">
<p>Django 1.7 のアルファ版がリリースされました。 djangoproject.com のブログ記事を翻訳して以下に掲載しています。</p>
<ul class="simple">
<li><a class="reference external" href="https://www.djangoproject.com/weblog/2014/jan/22/django-17-alpha-1-released/">https://www.djangoproject.com/weblog/2014/jan/22/django-17-alpha-1-released/</a></li>
</ul>
<p>Django 1.7 リリースプロセスの一環として Django 1.7 alpha 1 がリリースされました。</p>
<p>1.7 リリースサイクルの初めの一歩であり、Django 1.7 から使える新機能を試す ためのプレビュー、テスト用パッケージです。</p>
<p>Django 1.7 ではたくさんの改善に加えて、いくつかの新機能が 追加されています。 ハイライトとしてはスキーママイグレーションフレームワーク、 一般的なエラーを発見、修正するのに役立つ新しいバリデーションツール、 Djangoアプリケーションの参照、読み込み方法の抜本的なリファクタリングや カスタムデータベースルックアップなどです。</p>
<p>より詳細には、開発段階の <a class="reference external" href="https://docs.djangoproject.com/en/dev/releases/1.7/">1.7 リリースノート</a> を参照してください。</p>
<p>すべての alpha, beta パッケージと同じように、この Django 1.7 alpha 1 も 製品用のパッケージではありません。 新しい機能をちょっと使ってみたい場合や、バグの特定と修正に協力していただけるなら アプファパッケージは <a class="reference external" href="https://www.djangoproject.com/download/">ダウンロードページ</a> から入手できます。 (バグ報告は <a class="reference external" href="https://code.djangoproject.com/newticket">issue tracker</a> から可能です)</p>
<p>リリースノートに書かれてる以上の追加としては、すでに 2 つの issue が 報告されています。</p>
<ul class="simple">
<li><a class="reference external" href="https://code.djangoproject.com/ticket/21856">Issue #21856</a> -- an empty value for the DATABASES setting will cause a crash.</li>
<li><a class="reference external" href="https://code.djangoproject.com/ticket/21831">Issue #21831</a> -- using the contenttypes package or GenericForeignKey will fail unless django.contrib.auth is in INSTALLED_APPS.</li>
</ul>
<p>両者とも後の最終的な 1.7 リリースでは修正されます。</p>
<p>South (有名なサードパーティー製のスキーママイグレーション用パッケージ) ユーザーは 1.7 alpha が South と互換性があると覚えておいてください。</p>
<p>以上です。</p>
</div>
</div>Django1.6.1がリリースされました2013-12-15T09:35:20+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/django161/<div class="entry-body">
<div class="entry-content">
<p>先日の12日にDjango1.6.1がリリースされました。</p>
<p>このリリースはマイナーなバグ対応のみのリリースだそうで、挙動に影響する大きな変更はないようです。</p>
<ul class="simple">
<li><a class="reference external" href="https://docs.djangoproject.com/en/1.6/releases/1.6.1/">リリースノート</a></li>
</ul>
<p></p>
</div>
</div>Django 1.6 がリリースされました2013-11-07T09:34:22+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/django-16/<div class="entry-body">
<div class="entry-content">
<p>先日 Django 1.6 が正式にリリースされました。</p>
<ul class="simple">
<li><a class="reference external" href="https://www.djangoproject.com/download/">ダウンロードページ</a></li>
</ul>
<p><a class="reference external" href="https://docs.djangoproject.com/en/1.6/releases/1.6/">リリースノート</a> では新機能の詳細すべてが網羅されています。 ここではハイライトをいくつか紹介します:</p>
<ul class="simple">
<li>Django 1.6 ではデフォルトのプロジェクト/アプリケーションテンプレート が簡略化されました。さらに <a class="reference external" href="https://docs.djangoproject.com/en/1.6/ref/clickjacking/#clickjacking-prevention">クリックジャッキング対策</a> と admin インタフェースがデフォルトで有効になっています。</li>
<li>Django 1.6 から <a class="reference external" href="https://docs.djangoproject.com/en/1.6/topics/db/transactions/">トランザクションの扱い</a> が改修され、 データベースレベルでの自動コミットもデフォルトで有効に変更されました。 この改修には Django 1.5 と非互換な点があります。 <a class="reference external" href="https://docs.djangoproject.com/en/1.6/topics/db/transactions/#transactions-upgrading-from-1-5">1.5 スタイルのトランザクションハンドリングからの移行</a> を参照してください。</li>
<li>Django 1.6 は <a class="reference external" href="https://docs.djangoproject.com/en/1.6/ref/databases/#persistent-database-connections">データーベースへの持続的接続</a> をサポート しています。ただしこれはコネクションプーリングとは違います。 同じワーカーによって扱われる別のリクエストをまたいで コネクションを保持できます (保持時間は設定可能です)。</li>
</ul>
<p>他にも Python 3 の正式対応や、テストランナーの改修などもされています。</p>
<div class="section" id="id7">
<h1>日本語圏向けのハイライト</h1>
<p>Django 1.6 からは django.contrib.localflavor は削除されました。 これは別パッケージに分離されて <a class="reference external" href="https://pypi.python.org/pypi/django-localflavor">django-localflavor</a> として 利用できます。</p>
</div>
<div class="section" id="djnago-1-4-10">
<h1>Djnago 1.4.10 リリース</h1>
<p>同日、 Python 2.5 互換のバグ対応のために Django 1.4.10 もリリースされました。</p>
</div>
</div>
</div>1.6rc1,1.5.5リリース2013-11-04T09:33:21+00:00Hiroki Kiyohara/weblog/author/hirokiky/http://djangoproject.jp/weblog/16_rc_15_5_release/<div class="entry-body">
<div class="entry-content">
<p>Django1.6rc1, 1.5.5, 1.4.9がリリースされました。</p>
<div class="section" id="rc1">
<h1>1.6rc1リリース</h1>
<p>Django1.6のリリース候補版(release candidate)がリリースされました。 このパッケージはプレビュー、テスト用のもので、本番環境で使うものではありません。 1.6から使える新機能を試してみたい人は使ってみてください。</p>
<p>もしリリースを阻害するようなバグがでなければ、 Django 1.6 は2週間ほどでリリースされます。 (だいたい11月5日ごろ)</p>
<p>Django 1.6 rc は <a class="reference external" href="https://www.djangoproject.com/download/">ダウンロードページ</a> から入手できます。 その際には <a class="reference external" href="https://docs.djangoproject.com/en/dev/releases/1.6/">リリースノート</a> の参照をおすすめします。</p>
<p>Django 1.6 には Python 2.6.5 から Python 3.x リリースが必要です (ただしPy3はPython 3.2 からの対応です) Python 3 対応の詳細は <a class="reference external" href="https://docs.djangoproject.com/en/dev/topics/python3/">Python 3 への移行ガイド</a> を参照してください。</p>
<ul class="simple">
<li>元ブログ記事: <a class="reference external" href="https://www.djangoproject.com/weblog/2013/oct/22/16c1/">https://www.djangoproject.com/weblog/2013/oct/22/16c1/</a></li>
</ul>
</div>
<div class="section" id="id3">
<h1>1.5.5,1.4.9リリース</h1>
<p>1.5.5, 1.4.9は軽微なバグフィックスを集めたものです。 <a class="reference external" href="http://djangoproject.jp/weblog/2013/09/23/django_1_5_4/">先日のバグフィックス</a> をよりうまく 扱うようPBKDF2ハッシャーを修正。その他セキュリティーには関係のないバグをいくつか修正しています。</p>
<ul class="simple">
<li>元ブログ記事: <a class="reference external" href="https://www.djangoproject.com/weblog/2013/oct/24/bugfix-releases/">https://www.djangoproject.com/weblog/2013/oct/24/bugfix-releases/</a></li>
</ul>
</div>
</div>
</div>