【发布时间】:2011-02-10 02:17:31
【问题描述】:
我最近开始研究 Django,现在我的应用程序即将完成,我开始思考安全性和最佳实践。
我有一个生成页面的视图,并且页面中的不同功能将 AJAX 请求发布到各个视图。例如,我有一个名为 show_employees 的视图,我可以通过向视图 delete_employee 和 update_employee 传递一个发布请求来删除和更新员工。
我已将 @login_required 装饰器放在每个视图之前,因为我不希望任何人在未经身份验证的情况下访问它们。这样可以吗?
在 delete_employee 和 update_employee 视图中,我仅在请求是 AJAX POST 请求时才响应请求(uisng is_ajax())。这样可以吗?
当视图成功完成所需操作时,我返回“成功”,当我的表单中存在验证错误但我仍未处理其他异常时,我返回错误。我该怎么做?我是否应该通过像 this 这样的 AJAX 响应返回标准 500 页面,方法是使用 try-except 块包装视图以处理所有异常?
我还能做些什么来保护我的视线?
这是我的示例视图:
@login_required
def add_site(request):
data = {}
if request.method == 'POST':
if request.is_ajax():
form = AddSiteForm(request.user, request.POST)
if form.is_valid():
site = form.save(commit=False)
site.user = request.user
site.save()
data['status'] = 'success'
data['html'] = render_to_string('site.html', locals(), context_instance=RequestContext(request))
return HttpResponse(simplejson.dumps(data), mimetype='application/json')
else:
data['status'] = 'error'
data['errors'] = {}
for field, error in form.errors.iteritems():
data['errors']['id_'+field] = strip_tags(unicode(error))
return HttpResponse(simplejson.dumps(data), mimetype='application/json')
谢谢。
【问题讨论】:
标签: python django security django-views