この質問は、コード作成の方法についての直接的なものよりも保険の再保険です。自己診断として私は専門家にそのようなことを依頼する可能性はあまりないので、ここで試してみる。CSRF免除はどのような場合に危険ですか?
私はジャンゴ・ドキュメント(https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/)のドキュメントとそのページ上のいくつかの情報を読んでいる:http://cwe.mitre.org/top25/#CWE-352
限り私は理解しているとして、DjangoはAにトークン(ピンコードのいくつかの種類)を提供しますユーザー。それが本当に彼であることを確認するために、彼は次に彼が要求をするときにそれを返さなければなりません。また、Googleの一部の人々は、これがAJAXリクエストでも可能であることを発見しました。そのため、1.2.6以降の新しいポリシーを保護する理由があります。そして、CSRFは、誰かに偽装しているもの(悪い、危険なコード、破損したファイルなど)を私に与える人に関するものです。
だから私はこのようないくつかのコードを持っている場合:私は与えられた値を変換しようとする前に、データベースまたは自分のアプリケーションのどの部分へのアクセスを与えていないよと、保存する必要があります
@csrf_exempt
def grab(request):
"""
view to download an item
POST because it stores that a user has downloaded this item
"""
item_id = request.POST.get('item', None)
if not loop: return HttpResponseBadRequest('no item id provided')
item = Item.objects.get(pk=int(item_id))
整数。ファイルをダウンロードしている人が間違っていると、あまりにも大きなダメージはありません(この場合はほとんどありません)。私はこの見解に依拠した法案を書くと仮定すると、CSRF免除はいろいろな形で違うでしょう(そうですか?)。
誰かがCSRFトークンをユーザーから盗んで、それを使って私(またはユーザー)を欺くことができない理由も理解できません。だから私はこのトピックに関するいくつかの質問を持っています:
1)上記の私の前提ですか?
2)誰かが私に教えてくれるかもしれませんが、何人かの素敵な人が上のビューを使って汚いトリックをすることができます。
3)は、man-in-the-middle攻撃の例です。それはちょうどそれに関係しているのですか、まったく違うものですか?
4)このような危険性についてさらに読むための貴重なリンクはありますか?
多分これらの質問のいくつかはあまりよく知られているとは言えませんが、私はそれを乗り越えようとしています。誰かが私を助けることができたらとても嬉しいです。
トンネルの終わりに暗いライトが表示されています...もし私がサーバーに邪悪なものを送りたければ、まずいくつかのデータをいくつかのユーザーのブラウザに送る必要があります。このデータでは、攻撃を受けるサーバーに送信する自動的に送信するフォームを非表示にしています。彼はそこにアカウントを持っているので、ユーザーはそのサーバーにログインしていると仮定します。サーバーが何らかのトークンをチェックしなければ、そのリクエストは合法であったと考える必要があります。少なくとも私は今どのように動作しているのか、そしてMIMとXSSにラインを描くのはどこか考えています。ありがとうございました。 – marue
@marue CSRFは悪意のあるデータをサーバーに送信することではありません。攻撃サイトが犠牲者のために正当で本物の要求を送ることができるため、主に偽装に関するものです。盗聴、MITM、およびXSSは、(ほとんどの認証管理スキームがCookieベースのセッションを使用するので、CSRFトークンを緩和する手段に過ぎません。代わりにセッションIDを取得することもできます)。 – Gumbo
CSRFは、あなたが誰かではないふりをしていることを「唯一」していますか?重要なことだけを意味するのではなく、他のすべてが異なる攻撃方法です。 – marue