Gần đây tôi đã bắt đầu làm việc trên Django và bây giờ ứng dụng của tôi sắp hoàn thành và tôi đã bắt đầu tự hỏi về bảo mật và các phương pháp hay nhất.Bảo mật xem Django và thực hành tốt nhất
Tôi có chế độ xem tạo ra một trang và các chức năng khác nhau trong yêu cầu AJAX của trang gửi cho các chế độ xem riêng lẻ. Ví dụ, tôi có một cái nhìn gọi là show_employees và tôi có thể xóa và cập nhật nhân viên bằng cách chuyển một yêu cầu bài viết tới các khung nhìn delete_employee và update_employee.
Tôi đã đặt @login_required trang trí trước mỗi chế độ xem này vì tôi không muốn bất kỳ ai truy cập chúng mà không được xác thực. Điều này có được không?
Trong chế độ xem delete_employee và update_employee, tôi chỉ trả lời yêu cầu nếu đó là yêu cầu POST của AJAX (bằng is_ajax()). Điều này có được không?
Tôi trả về 'thành công' khi chế độ xem thành công khi thực hiện những gì cần và lỗi khi có lỗi Xác thực trong biểu mẫu của tôi nhưng tôi vẫn không xử lý các ngoại lệ khác. Làm thế nào tôi nên làm điều này? Tôi có nên trả lại trang chuẩn 500 thông qua phản hồi AJAX như this bằng cách đóng khung xem bằng khối thử-trừ để xử lý tất cả ngoại lệ không?
Tôi có thể làm gì khác để đảm bảo chế độ xem của mình không?
Dưới đây là một cái nhìn mẫu của tôi:
@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')
Cảm ơn bạn.