Recientemente comencé a trabajar en Django y ahora mi aplicación está casi terminada y comencé a preguntarme sobre la seguridad y las mejores prácticas.Django view security and best-practices
Tengo una vista que genera una página y diferentes funciones en la página que AJAX solicita a las vistas individuales. Por ejemplo, tengo una vista llamada show_employees y puedo eliminar y actualizar empleados al pasar una solicitud posterior a las vistas delete_employee y update_employee.
He puesto @login_required decoradores antes de cada uno de estos puntos de vista ya que no quiero que nadie les acceder sin ser autenticado. ¿Esta bien?
En las vistas delete_employee y update_employee, solo respondo para solicitar si se trata de una solicitud AJAX POST (uisng is_ajax()). ¿Esta bien?
Devuelvo un 'éxito' cuando la vista tiene éxito al hacer lo que se necesita y un error cuando hay un error de Validación en mi formulario, pero todavía no estoy manejando otras excepciones. ¿Cómo debería hacer esto? ¿Debo devolver la página estándar de 500 a través de una respuesta AJAX como this al envolver la vista con un bloque try-except para manejar todas las excepciones?
¿Hay algo más que pueda hacer segura mi vista?
Aquí es una visión muestra de la mina:
@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')
Gracias.