Servicios web RESTful - Seguridad
Dado que los servicios web RESTful funcionan con rutas de URL HTTP, es muy importante proteger un servicio web RESTful de la misma manera que se protege un sitio web.
Las siguientes son las mejores prácticas que se deben cumplir al diseñar un servicio web RESTful:
Validation- Validar todas las entradas en el servidor. Proteja su servidor contra ataques de inyección SQL o NoSQL.
Session Based Authentication - Utilice la autenticación basada en sesión para autenticar a un usuario siempre que se realice una solicitud a un método de servicio web.
No Sensitive Data in the URL - Nunca use nombre de usuario, contraseña o token de sesión en una URL, estos valores deben pasarse al servicio web a través del método POST.
Restriction on Method Execution- Permitir el uso restringido de métodos como los métodos GET, POST y DELETE. El método GET no debería poder eliminar datos.
Validate Malformed XML/JSON - Verifique que la entrada con el formato correcto se haya pasado a un método de servicio web.
Throw generic Error Messages - Un método de servicio web debe usar mensajes de error HTTP como 403 para mostrar acceso prohibido, etc.
Código HTTP
No Señor. | Código HTTP y descripción |
---|---|
1 |
200 OK - muestra éxito. |
2 |
201 CREATED- cuando un recurso se crea correctamente mediante la solicitud POST o PUT. Devuelve el enlace al recurso recién creado mediante el encabezado de ubicación. |
3 |
204 NO CONTENT- cuando el cuerpo de respuesta está vacío. Por ejemplo, una solicitud DELETE. |
4 |
304 NOT MODIFIED: Se utiliza para reducir el uso del ancho de banda de la red en caso de solicitudes GET condicionales. El cuerpo de respuesta debe estar vacío. Los encabezados deben tener fecha, ubicación, etc. |
5 |
400 BAD REQUEST- indica que se proporciona una entrada no válida. Por ejemplo, error de validación, datos faltantes. |
6 |
401 UNAUTHORIZED : Indica que el usuario está utilizando un token de autenticación incorrecto o no válido. |
7 |
403 FORBIDDEN- indica que el usuario no tiene acceso al método que se está utilizando. Por ejemplo, Eliminar acceso sin derechos de administrador. |
8 |
404 NOT FOUND - declara que el método no está disponible. |
9 |
409 CONFLICT- declara una situación de conflicto al ejecutar el método. Por ejemplo, agregar una entrada duplicada. |
10 |
500 INTERNAL SERVER ERROR - indica que el servidor ha lanzado alguna excepción al ejecutar el método. |