2017-04-25 15 views
0

HTMLフォームなしでAJAX経由でPOSTリクエストを行います。 セキュリティ上の問題はありますか? なぜcsrfエラーはありませんか?私はcsrfデータを送信せず、csrfはdjangoで有効になっているからですか?Django 1.10 + AJAXをHTMLフォームなしで使用するセキュリティ

トグルstatus.js

jQuery(document).ready(function($) { 
    $("#switch-status").click(function(){ 
    $.ajax({ 
     url: '/account/switches/', 
     data: {'toggle': 'status'} 
    }); 
    }); 
}); 

view.py

@login_required 
def switches(request): 
    toggle = request.GET.get('toggle', None) 
    current_user = request.user 
    update = Switches.objects.get(owner=current_user) 
    if toggle == 'status': 
    if update.status is True: 
     update.status = False 
    else: 
     update.status = True 
    update.save() 
    return HttpResponse('') 

答えて

1

ajax関数のdefault methodGET一ないPOSTあります。したがって、a:

$.ajax({ 
    url: '/account/switches/', 
    data: {'toggle': 'status'} 
}); 

は、ajax GETが作成されることを意味します。したがって、あなたはPOSTリクエストを行っていません。

あなたがPOSTリクエストをしたい場合は、このようにそれを行う:もちろん

$.ajax({ 
    method: 'POST', 
    url: '/account/switches/', 
    data: {'toggle': 'status'} 
}); 

をあなたがPOSTしようとした場合、それは1を含めずに失敗しているので、トークンその後、CSRFを含める必要があります。それを実現する方法をhere見てください。

+0

ありがとうございます。 GETに他のセキュリティ問題がありますか? – seeberg

+0

このメソッドで機密データを渡さない限り、セキュリティ上の問題は発生しません。 [ここ](http://stackoverflow.com/questions/198462/is-either-get-or-post-more-secure-than-the-other)または[ここ](https://security.stackexchange)を参照してください。 com/questions/33837/get-vs-post-which-the-more-secure)を参照してください。 –

+0

@nik_m話すことができますか? :) –

関連する問題