vue+django的csrf攻擊問題解決思路


問題起因:由於本項目是前后端分離,所以在原本的django里使用template解決csrf問題是不現實的

解決過程:

1.在django的view里設置request的cookie,讓他帶csrftoke。

2.修改前端的代碼,獲取cooke和請求頭里的token值做比較。

實現的代碼如下:

后台view:

@require_http_methods(['GET',"POST"])
def register_or_login(request):
print request
request.META["CSRF_COOKIE_USED"] = True
get_token(request)
uf = UserForm(request.POST)
print request.POST
   ......
前端代碼如下:
methods: {
back () {
this.$router.back(-1)
},
getCookie (name) {
var value = '; ' + document.cookie
var parts = value.split('; ' + name + '=')
if (parts.length === 2) return parts.pop().split(';').shift()
},
post里增加請求頭內容
this.axios({
method: 'post',
url: this.linkPrefix + '/users_api/register_or_login',
headers: {'X-CSRFToken': this.getCookie('csrftoken')},
data: postData
})、

如此完美解決了該問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM