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.