对于contactform还是使用来自Django的send_mail函数的表单,使用CSRF是否安全?
因此,根据医生的意见;
针对CSRF攻击的第一个防御措施是确保GET请求(以及RFC 7231#节-4.2.1定义的其他“安全”方法)没有副作用。
一个帖子请求,它只创建一个电子邮件消息,不触及数据库,是否被认为是一种“安全”的方法?
示例代码
from django.core.mail import BadHeaderError, send_mail
from django.http import HttpResponse, HttpResponseRedirect
def send_email(request):
subject = request.POST.get('subject', '')
message = request.POST.get('message', '')
from_email = request.POST.get('from_email', '')
if subject and message and from_email:
try:
send_mail(subject, message, from_email, ['admin@example.com'])
except BadHeaderError:
return HttpResponse('Invalid header found.')
return HttpResponseRedirect('/contact/thanks/')
else:
# In reality we'd use a form class
# to get proper validation errors.
return HttpResponse('Make sure all fields are entered and valid.')*文档中的示例
我只是在想,在我加入CSRF豁免之前,我是否遗漏了一些东西。现在我听到你在想,为什么有人想要禁用CSRF验证?
在欧盟,我们必须遵守探地雷达。通过设置cookie,我们需要显式地要求用户接受cookie,如果可以阻止设置cookie,则不需要显示cookie提示符;)
发布于 2021-04-26 16:40:54
当您应用csrf_excempt装饰器时,您是说来自任何地方的任何人都可以对您的视图发布帖子,您正在禁用django提供的验证,当站点中的任何人在浏览器中加载联系人表单时,他们可能无法对数据库做任何事情,但是他们可以在没有加载表单视图的情况下从任何地方向您的admin@example.com帐户发送垃圾邮件。
https://stackoverflow.com/questions/67269704
复制相似问题