¿Es seguro deshabilitar la protección CSRF en un área solo de administrador en una aplicación Django?

No, y a menos que haya una razón convincente, ni siquiera lo consideraría. La probabilidad de una violación será un poco menor si restringe su conjunto de usuarios, pero eso es solo porque está reduciendo el número de personas cuyas cuentas podrían ser atacadas. Lo más importante, deshabilitar la protección CSRF para un grupo de usuarios no es diferente a deshabilitarla para otro. Si no lo deshabilitaría para todos sus usuarios, no hay razón para deshabilitarlo para algunos de ellos, especialmente para el grupo con el nivel de privilegio más alto.

Veamos un escenario para ver por qué.

  1. El atacante codifica una página maliciosa diseñada para atacar su aplicación, aprovechando una parte del código que no asegura que los datos que está recibiendo provengan de un formulario legítimo generado por la propia aplicación.
  2. El atacante engaña a uno de sus administradores para que vean la página mientras están conectados a su aplicación. La página no hace nada abiertamente sospechoso, pero en el fondo envía un formulario oculto que envía un comando desagradable al código inseguro que maneja ese tipo de datos.
  3. Como su administrador ha iniciado sesión, sus cookies se envían junto con esa solicitud y el envío del formulario se parece a algo que hicieron a propósito. La aplicación felizmente hace lo que se le dijo que hiciera, y ahora tienes un problema.

Tenga en cuenta que no hay nada allí que sea específico para un determinado tipo de usuario. Podría cambiar “admin” con cualquier otro grupo y no habría mucha diferencia, lo único que cambia es cuánto daño podría causar el ataque. Puede confiar más en sus administradores que en sus usuarios habituales, pero no es seguro desactivar la protección CSRF porque esa confianza es exactamente lo que explotarán los ataques.