Articulo de Revisión - Juan Martinez - 160003922
Articulo de Revisión - Juan Martinez - 160003922
Articulo de Revisión - Juan Martinez - 160003922
Resumen---Este artículo de revisión bibliográfica examina la y ampliamente adoptada debido a sus principales características
interfaz de programación de aplicaciones (API) ajustada al estilo de simplicidad, escalabilidad y facilidad de uso. La arquitectura
arquitectónico de Transferencia de Estado Representacional REST se basa en el protocolo HTTP y proporciona un conjunto
(REST), centrándose en su definición, principios fundamentales,
de principios y restricciones para el diseño de servicios web.
desafíos de seguridad y sus mecanismos de resolución asociados. Se
explora como API REST ha ganado popularidad y se ha convertido
en un estilo ampliamente adoptado en la creación de servicios web A medida que la adopción de una API que se ajusta a los
debido a su simplicidad, escalabilidad y facilidad de uso. Se hace principios y restricciones de REST sigue creciendo, también
especial hincapié en la importancia de considerar la seguridad desde aumenta la necesidad de abordar los desafíos de seguridad
el inicio del diseño de una API REST, abordando aspectos críticos asociados con este estilo arquitectónico y de la industria del
como autenticación, autorización, protección de datos sensibles y
software en general. Por lo tanto, es crucial considerar la
mitigación de ataques comunes. Además, se examinan fuentes y
materiales bibliográficos que respaldan el análisis de la conexión seguridad desde el inicio del diseño de una API REST, con el
entre la API REST y la seguridad en aplicaciones web, a través de fin de garantizar la integridad, confidencialidad y
organizaciones como OWASP (Open Web Application Security disponibilidad de los datos y servicios involucrados. En su
Project). Se presentan las directrices y recomendaciones propuestas constante evolución se incluyen mejoras de seguridad,
por estas organizaciones, así como otros estándares y protocolos de implementando otros protocolos y estándares mucho más
seguridad fundamentales. Todo esto con el propósito de brindar una
completos y seguros como HTTPS, JSON Y JWT.
guía y orientación general para arquitectos, desarrolladores y
profesionales del área del software interesados en comprender y
abordar de manera eficaz las APIs REST. Al implementar una API REST, queda en manos del
arquitecto y desarrollador aplicar y programar a cabalidad los
Abstract—This literature review article examines the application principios fundamentales de REST, incluyendo aquellos
programming interface (API) aligned with the Representational relacionados con la seguridad, de manera correcta y precisa,
State Transfer (REST) architectural style, focusing on its definition, para así proporcionar un excelente producto. Por esto, es
fundamental principles, security challenges and its associated
importante considerar e incluir la adopción de estándares y
resolution mechanisms. It explores how REST API has gained
popularity and become a widely adopted style in creating web buenas prácticas reconocidas en el campo de la seguridad de
services due to its simplicity, scalability, and ease of use. Special API REST, como aquellas propuestas por organizaciones como
emphasis is placed on the importance of considering security from OWASP, entre otras.
the beginning of designing a REST API, addressing critical aspects
such as authentication, authorization, protection of sensitive data, A menudo, es complejo incluir todas estás pautas y principios
and mitigation of common attacks. Additionally, sources and
en una aplicación y servicio web, por esta razón, esta revisión
bibliographic materials supporting the analysis of the connection
between REST API and web application security are examined bibliográfica explora la definición de una API REST, pero
through organizations such as OWASP. The guidelines, además los mecanismos que pueden llegar a aportar de manera
recommendations proposed by these organizations, and other positiva al ámbito de seguridad de la misma, y como estas se
fundamental security standards and protocols are presented. All of conectan estándares, fundamentos y practicas propuestas por
this aims to provide general guidance and direction for architects, OWASP, proporcionando así una guía y orientación general
developers, and software professionals interested in understanding
para los interesados en comprender, diseñar y desarrollar de
and effectively addressing REST APIs.
manera eficaz las APIs REST. [1]
Palabras claves: API, REST, Desafío, Mecanismo, Protocolo,
Estándar, Seguridad, Estilo, Arquitectura. II. DESARROLLO DEL TEMA
Para abordar de manera precisa el tema de las APIs de REST
I. INTRODUCCIÓN es necesario conocer las definiciones de su contenido general.
Las APIs desempeñan un papel fundamental en el desarrollo
de aplicaciones y servicios web, permitiendo la comunicación DEFINICIONES
y el intercambio de datos y funcionalidades entre diferentes
sistemas. En este contexto, una API ajustada al estilo API: Es un conjunto de pautas, restricciones y protocolos que
arquitectónico de REST ha emergido como una opción popular proporciona una interfaz estandarizada que permite la
2
comunicación entre productos y servicios, donde el cliente no Retomando el diseño bajo REST, las 6 restricciones o limites
tiene ninguna necesidad de tener acceso al código fuente del que plantea el Dr. Roy Fielding son:
proveedor, ya que este último, a través de una capa de
abstracción, facilita la exposición de funciones y servicios • Interfaz uniforme: Se fija que todas las solicitudes de
necesarios, lo que facilita la interoperabilidad y la integración API dirigidas al mismo recurso deben tener la misma
de sistemas. [2] estructura, sin importar quien sea el consumidor. [3]
• Desacoplamiento cliente-servidor: Es fundamental la
Para la concepción de los principios fundamentales del estilo separación de intereses entre los sistemas involucrados
arquitectónico REST según “Architectural Styles and the en el sistema total, de esta manera se mejora la
Design of Network-based Software Architectures, Fielding's portabilidad de las interfaces graficas y se mejora la
doctoral dissertation” [3], se tiene que: escalabilidad mediante la simplicidad en el desarrollo e
implementación de los componentes del servidor. [3]
REST: Es un estilo arquitectónico del ámbito del desarrollo • Sin estado: También conocido como apátrida, plantea
de software para sistemas hipermedia distribuidos que consiste que REST como un servicio que no tiene estado,
en un conjunto de restricciones aplicadas al desarrollo de teniendo que cuando se lleva a cabo una transferencia de
servicios web. Siendo más precisos, es una interfaz que permite datos en una comunicación entre dos sistemas, a la
comunicación entre varios sistemas funcionalmente siguiente comunicación entre los mismos, estos datos se
independientes basados en el protocolo HTTP (Protocolo de habrán perdido, lo que significa que para cada solicitud
transferencia de hipertexto), que sirve para obtener y generar a la API debe llevar dentro de su estructura los datos
operaciones y datos, recibiendo y respondiendo peticiones en necesarios para procesarla. [3]
formatos muy específicos como los son JSON (JavaScript • Capacidad de cache: Plantea que, para mejorar la
Object Notation) y XML (Extensible Markup Language). [3] eficiencia de la red, cuando sea posible, los recursos
utilizados en el sistema deben almacenarse en la
Cabe definir que es un formato JSON, dado que API REST memoria cache en el lado del cliente o del servidor. [6]
es muy habitual encontrárselo, por su amplio y fácil uso. • Arquitectura del sistema de capas: Las APIs REST
deben diseñarse de manera que ni el cliente ni el servidor
JSON: Consignado en el documento “RFC 8259” de IETF, conozcan si se está interactuando con un componente
es un formato de transferencias de datos ligero, basado en texto más allá de la capa inmediata, esto promueve la
e independiente del lenguaje del desarrollo de los servicios. [4] independencia de los servicios, quedando
funcionalmente apartados de los intermediarios o de la
Pero para entender el concepto de REST, es fundamental aplicación final. [3] [7]
saber la definición del protocolo HTTP: • Código bajo demanda: La aplicación de REST debe
permitir a los servidores transferir programas
HTTP: Es un protocolo de comunicación consignado en el ejecutables a los clientes, aplicando en conjunto la
documento “RFC-2616” de IETF, que permite la transferencia restricción de sin estado, por lo tanto, será temporal. Esta
de datos en formatos específicos como XML, HTML, JSON, restricción exige que el cliente debe tener la capacidad
entre otros, a través de la World Wide Web (WWW) o también de comprender y ejecutar el código que descarga bajo
conocida como simplemente la red, una de sus características demanda del servidor. [3] [7]
esenciales es que es un protocolo sin estado, por esto se incluyó
como base para la arquitectura REST. [5] Al diseñarse una API ajustada a los límites de REST, junto a
las restricciones de diseño, también se deben tener en cuenta las
Es importante que, al momento de diseñar las respuestas a siguientes abstracciones que constituyen un sistema REST:
peticiones hechas a la API, se emplee los códigos de estado de
respuesta HTTP, practicado por REST, estos proporcionan una • Recursos: Puede ser cualquier cosa que sea lo
respuesta de la solicitud bastante concisa.
suficientemente importante como para ser referenciada
y direccionable a través de la red. Un recurso se puede
El “RFC 2616” [5], establece las recomendaciones para
ver como cualquier elemento de información como: un
establecer estos códigos de estado de respuesta HTTP en las
documento electrónico, un dato de una fila de una base
aplicaciones y servicios web y que son usados en el estilo de datos o el resultado de ejecutar un algoritmo. [3] [22]
arquitectónico de REST:
• Representación: Describe el estado de un recurso en el
momento de una petición, la representación de los
1. Respuestas informativas (100–199).
recursos resulta ser la que se envía entre los servidores y
2. Respuestas satisfactorias (200–299).
clientes. [3] [8]
3. Redirecciones (300–399).
• URI (Uniform Resource Identifier): Consignado en el
4. Errores de los clientes (400–499).
documento “RFC-3986” de IETF, es la única forma de
5. Errores de los servidores (500–599). [5]
intercambiar representaciones entre servidores y
3
clientes, definido como una secuencia compacta de Por último, al diseñar una API REST, si se quiere hacer de
caracteres que identifica un recurso abstracto o físico. manera eficaz, se debe plantear usar desde el inicio
[3] [9] Uniformidad de las interfaces a través de las peticiones HTTP.
Con esto se plantea que las acciones sobre los datos que se
Ejemplo de URI: pueden llevar a cabo en sistema como: CREATE, RETRIEVE,
UPDATE, DELETE se usen ligados de manera lógica a los
métodos del protocolo HTTP equivalente, teniendo que:
CREATE será POST, RETRIEVE será GET, UPDATE será
PUT y DELETE seguirá siendo DELETE, en las versiones más
recientes se han incorporado acciones ligados a métodos HTTP
más específicos, pero que en esencia siguen siendo excepciones
de los métodos principales ya mencionados anteriormente. [5]
ii. Tomado de: Proyecto REST Security Cheat Sheet Luego, la estructura de un JWT se compone de:
de OWASP. [23]
• Encabezado: Consta de dos partes:
OWASP plantea de manera precisa una serie de o El algoritmo de firma que se está utilizando.
recomendaciones y buenas prácticas al momento de desarrollar o El tipo de token, que en este caso es
aplicaciones y servicios web seguros ajustado al estilo principalmente "JWT".
arquitectónico REST: • Carga útil: La carga útil contiene las afirmaciones o
el objeto JSON.
• Los servicios REST deben proporcionar servicios y • Firma: Una cadena generada mediante un algoritmo
funcionalidades haciendo uso exclusivo del protocolo criptográfico que se puede utilizar para verificar la
HTTPS (Protocolo seguro de transferencia de integridad de la carga útil JSON. [24]
hipertexto). Esto brinda protección a las credenciales de
autentificación en el tránsito de la información, por Representación de la estructura de un JWT:
ejemplo, contraseñas, claves de API o tokens web de
JSON, a través de la red. Para esto es necesario
implementar protocolos criptográficos del nivel de
transporte como TLS (Transport Layer Secutity)
consignado en el documento “RFC 8446” de IETF [12],
este funcionamiento de protocolos en conjunto de HTTP
y TLS se consigna en el documento “RFC 2818” de
IETF [13], estás tecnologías se podrían combinar con
otros protocolos complementarias como HSTS.
Si se usa un HEADER:
{
"alg": "HS256",
"typ": "JWT"
Figura 3. Comparativa simple de HTTP vs HTTPS. [14] }
Al utilizar este mecanismo en una API REST se puede • Mecanismos de cifrado de comunicaciones: Se propone
garantizar la autenticidad y la integridad de la información la utilización de la navegación segura mediante el
transmitida entre el cliente y el servidor de la API. protocolo HTTPS, en conjunto con el protocolo TLS,
para prevenir ataques de tipo "Man in the Middle". De
• API Keys: Los servicios REST públicos que no cuentan esta manera, el atacante no podrá interceptar la
con servicio de control de acceso corren el riesgo de ser comunicación entre el cliente y el servidor, debido a que
convertidos incidentes contraproducentes en los datos se transmitirán de forma cifrada desde el origen
rendimiento de la API, por tanto, para mitigar esto se hasta el destino. [18]
propone usar API Keys que suelen establecer como un • Mecanismos de autenticación y autorización:
acceso de paga para las organizaciones lucrativas. [23] Se hace un repaso de algunos mecanismos utilizados desde
• Restringir métodos HTTP: Se debe aplicar una lista la formulación de REST:
especifica de métodos HTTP permitidos en su API
(GET, POST, PUT, etc.), validando de igual manera las 1. Autenticación básica de HTTP: En los inicios de
URI, los valores que llegan en la estructura de la REST el hecho de aprovechar las características de
representación (JSON, XML) y definir un limite de HTTP se presenta como uno de los métodos iniciales
tamaño de solicitud. [23] utilizados para salvaguardar el acceso a las APIs
REST. Se tiene que se envía una cabecera llamada
Por último, se plantea recomendaciones como: hacer un "Authorization" que contiene el valor "Basic", seguido
control de los errores que se podrían presentar en la petición, del nombre de usuario y la contraseña codificados en
hacer registro de auditoria, usar encabezados de seguridad, base64. [18]
establecer encabezados del estándar CORS (Cross-Origin 2. Autenticación HTTP Digest: Este enfoque de
Resource Sharing) apropiados para evitar peticiones de autenticación se desarrolló para abordar los problemas
orígenes no deseados y asegurarse de retornar códigos HTTP de seguridad asociados con la reversibilidad de la
acordes al resultado de la petición. [23] función base64 en la autenticación básica de HTTP.
Para transmitir las credenciales de la cuenta a
Todas estas recomendaciones de buenas prácticas, aunque autenticar, se utiliza la función hash MD5. El servidor
esa es su esencia inicial, ya se han vuelto casi un culto en el puede ser configurado para requerir directivas
ámbito de los servicios web, resultando en que organizaciones específicas para la aplicación de MD5, así como una
como IEEE citen estos documentos para abordar los temas de calidad de protección (qop) o calidad de la protección.
ciberseguridad, ya que allí se encontrará una guía bastante [18] [19]
completa y fundamentada para llevar a cabo un correcto y eficaz 3. Autenticación mediante API Key: Este método
desarrollo de aplicaciones web. implica generar y emitir claves alfanuméricas que
permiten a los desarrolladores/clientes autenticarse en
Cabe aclarar que estas recomendaciones se deben llevar a la API. El proceso de autenticación es similar al de la
cabo de manera coherente y adecuada, para así proporcionar la autenticación básica de HTTP, pero en lugar de enviar
mayor seguridad a los productos desarrollados, no tendría contraseñas en las cabeceras, se envía la API Key
ningún sentido aplicar unos pocos y otros no, inevitablemente directamente. La forma de enviar la API Key varía
volvería a una API insegura y pasarían a estar comprometidos según el servicio y no está estandarizada. La ventaja
los activos de información del negocio. es que no se revelan las credenciales de la cuenta y el
proveedor del servicio puede gestionar y revocar las
iii. Tomado de: Protección de APIs REST del Máster claves. Sin embargo, presenta el riesgo de que un
Eduardo San Juan Castellanos. [18] atacante intercepte una petición y haga uso no
autorizado de la API Key. [18]
En esta tesis para la Maestría Universitaria en Ciberseguridad 4. Autenticación mediante protocolo OAuth2.0: Es un
y Privacidad de la Universitat Oberta de Catalunya, el Máster protocolo diseñado para permitir que una aplicación
San Juan Castellanos consigna una serie de métodos de tercera acceda a los datos de un usuario en un servidor
protección basados en buenas prácticas, el uso de protocolos y externo sin manejar sus credenciales. El protocolo
estándares, gestión documental, desarrollo de código limpio y define cuatro roles principales: el dueño del recurso, el
seguro e implementación de seguridad a nivel de red y servidor de recursos, el cliente y el servidor de
aplicación. [18] autorización. El flujo de autorización de código se
emplea cuando el usuario interactúa con la aplicación
Muchos de los métodos y herramientas de seguridad de una a través de una interfaz gráfica, mientras que el flujo
API ya existentes se pueden incluir en un elemento común de credenciales del cliente se utiliza cuando el cliente
llamado API Gateway, el cual, por lo general, actúa a modo de y el propietario generador del recurso son el mismo
proxy inverso entre la interfaz del cliente y el software del sistema. El protocolo utiliza tokens, que se transmiten
backend que ejecuta la API. en la cabecera de autorización HTTP, para permitir al
cliente acceder a los recursos en nombre del usuario.
7
Estos tokens están asociados con permisos específicos, Se evidencia como los diferentes mecanismos de protección
conocidos como ámbitos o scopes, que determinan los de la información en API REST ha venido evolucionando
privilegios de acceso. [18] apoyándose principalmente en los nuevos protocolos y
estándares emergentes respaldados por organizaciones
Luego, tenemos una abstracción del flujo del protocolo reconocidas internacionalmente dedicadas a la normalización
OAuth2.0: del área de la ingeniería, como EITF, IEEE y OWASP.
IV. CONCLUSIONES
La conclusión más importante de esta revisión bibliográfica es
que API REST como interfaz y estilo arquitectónico en su gran
mayoría hace uso de conceptos, protocolos y estándares ya
existentes, entendidos y usados de manera eficiente para crear así
una innovadora manera de desarrollar software.
[3] R. T. Fielding, "Architectural styles and the design of [23] OWASP, "REST Security Cheat Sheet," OWASP,
network-based software architectures" published doctoral Disponible en:
dissertation, University of California, Irvine, 2000. https://cheatsheetseries.owasp.org/cheatsheets/REST_Security
[4] Bray, T., "The JavaScript Object Notation (JSON) Data _Cheat_Sheet.html
Interchange Format," RFC 8259, IETF, diciembre 2017. [24] "What is a JWT? Understanding JSON Web Tokens".
[5] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., SuperTokens, Open Source Authentication.
Leach, P., & Berners-Lee, T., "Hypertext Transfer Protocol -- https://supertokens.com/blog/what-is-jwt (accedido el 7 de
HTTP/1.1," RFC 2616, IETF, junio 1999. julio de 2023).
[6] "¿Qué es una API REST?" IBM - Deutschland. [25] M. Anicas. "An Introduction to OAuth 2". DigitalOcean |
https://www.ibm.com/mx-es/topics/rest-apis (accedido el 1 de Cloud Hosting for Builders.
julio de 2023). https://www.digitalocean.com/community/tutorials/an-
[7] M. Massé, REST API design rulebook. Sebastopol, CA: introduction-to-oauth-2 (accedido el 16 de julio de 2023).
O'Reilly Media, 2011. [26] "Burp Suite - Application Security Testing Software". Web
[8] "Introducción a los Servicios Web RESTful". Universidad Application Security, Testing, & Scanning - PortSwigger.
de Alicante. https://portswigger.net/burp (accedido el 7 de julio de 2023).
http://www.jtech.ua.es/j2ee/restringido/cw/sesion11-
apuntes.pdf (accedido el 1 de julio de 2023).
[9] Berners-Lee, T., Fielding, R., & Masinter, L., "Uniform
Resource Identifier (URI): Generic Syntax," RFC 3986, IETF,
enero 2005.
[10] OWASP, "OWASP Cheat Sheet Series" OWASP,
Disponible en: https://cheatsheetseries.owasp.org/index.html,
Accedido: Julio 16, 2023.
[11] OWASP, "OWASP API Security Project," OWASP,
Disponible en: https://owasp.org/www-project-api-security/,
Accedido: Julio 16, 2023.
[12] Rescorla, E., "The Transport Layer Security (TLS)
Protocol Version 1.3," RFC 8446, IETF, agosto 2018.
[13] Rescorla, E., "HTTP Over TLS," RFC 2818, IETF, mayo
2000.
[14] "Why is HTTP not secure? | HTTP vs. HTTPS".
https://www.cloudflare.com/learning/ssl/why-is-http-not-
secure/. https://www.cloudflare.com/learning/ssl/why-is-http-
not-secure/ (accedido el 7 de julio de 2023).
[15] Jones, M., Bradley, J., & Sakimura, N., "JSON Web Token
(JWT)," RFC 7519, IETF, mayo 2015.
[16] "Guía de OWASP para APIs 2023". Linkedin.
https://www.linkedin.com/pulse/guía-de-owasp-para-apis-
2023-base4-security (accedido el 4 de julio de 2023).
[17] "REST, CCNA desde Cero". CCNA desde Cero.
https://ccnadesdecero.es/descripcion-rest/ (accedido el 7 de
julio de 2023).
[18] E. S. Juan Castellanos, "Protección de APIs REST"
Universitat Oberta de Catalunya (UOC), 2022.
[19] "API10:2019 Insufficient logging and monitoring". API
Security Articles, News, Vulnerabilities & Best Practices.
https://apisecurity.io/encyclopedia/content/owasp/api10-
insufficient-logging-and-monitoring.htm (accedido el 6 de julio
de 2023).
[20] "JWT.IO". JSON Web Tokens - jwt.io. https://jwt.io/
(accedido el 7 de julio de 2023).
[21] Priyasawant. "What is the composition of the URL? in
REST API". Numpy Ninja.
https://www.numpyninja.com/post/what-is-the-composition-
of-the-url-in-rest-api (accedido el 7 de julio de 2023).
[22] "¿Qué es una API de RESTful? - Explicación de API de
RESTful". Amazon Web Services, Inc.
https://aws.amazon.com/es/what-is/restful-api/ (accedido el 1
de julio de 2023).