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