@csrf\u豁免decorator是否使django视图不安全?
我想知道在什么情况下使用@csrf_employment decorator不会为可能的XSS漏洞打开大门 举一个具体的例子,下面是我写的视图,它为博客文章添加了一个简单的类似ajax的计数:@csrf\u豁免decorator是否使django视图不安全?,django,security,Django,Security,我想知道在什么情况下使用@csrf_employment decorator不会为可能的XSS漏洞打开大门 举一个具体的例子,下面是我写的视图,它为博客文章添加了一个简单的类似ajax的计数: @csrf_exempt def like(request): args = {} if request.method == 'POST': user = request.POST.get('user') lu= request.user
@csrf_exempt
def like(request):
args = {}
if request.method == 'POST':
user = request.POST.get('user')
lu= request.user
post_id = int(request.POST.get('post_id'))
try:
liked_blog = Blog.objects.get(id = post_id)
except:
liked_blog = None
if BlogLike.objects.filter(liker=request.user.id, blog=post_id):
liked_blog.likes -=1
liked_blog.save()
BlogLike.objects.filter(blog=post_id, liker=request.user.id).delete()
else:
liked_blog.likes +=1
liked_blog.save()
newliker = BlogLike(blog=post_id, liker=request.user.id)
newliker.save()
args['likes'] = str(liked_blog.likes)
return render(request, 'ajax_like.html', args)
ajax部分:
$(function(){
$('#like').click(function(){
$.ajax({
type: "POST",
url: "/blog/like/",
data: {
'post_id': $(this).attr('name'),
'csrfmiddlewaretoken': '{{csrf_token}}'
},
success: likeSuccess,
dataType: 'html'
});
});
});
function likeSuccess(data, textStatus, jqXHR)
{
$('#like_count').html(data);
}
我添加了@csrf_emption以消除关于csrf的恼人错误。
所以我想知道,在这种情况下,如何通过添加@csrf_-emption来提高网站的可用性 如果禁用csrf,则任何站点都可以增加计数器。因为你的观点没有什么特别之处,所以我认为它没有特别的安全重要性(但你永远不知道什么时候涉及到安全)。如果禁用csrf的唯一原因是为了避免csrf错误,那么实际上有一个非常简单的修复方法。只要包含要点中的代码,它就会像魔术一样工作 顺便说一下,我从官方django编译了代码 编辑:
此修复程序仅适用于jquery,但在其他js框架(如angular等)中也有类似的修复程序您是否有特定的问题?StackOverflow可能不是讨论此问题的最佳站点。请随意编辑问题以包含更多详细信息。@miki725我将问题代码具体化了。谢谢你的来信。