SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
Endpoints seguros en
nuestra WP-REST-API
Eric Zeidan
twitter: @ericjanzei
https://zeidan.info
WP Rest API
Si visitamos http://unsitio.algo/wp-json
Si visitamos https://
2017.madrid.wordcamp.org/wp-json/
wp/v2/posts/2485
Como aseguramos el bloqueo del
acceso a toda la WP-REST-API
Siempre hay un plugin
Wordfence
O con un simple código de PHP en el functions
de nuestro tema.
// con esto removemos todas las rutas WordPress
remove_action( 'rest_api_init', 'create_initial_rest_routes', 99 );
Disable REST API
//con estas desabilitamos totalmente la rest-api
add_filter(‘rest_enabled’, ‘_return_false’);
add_filter(‘rest_jsonp_enabled’, ‘_return_false’);
OAuth1 OAuth2
Cabeceras HTML URL Personalizadas
¿Y si lo queremos usar, como lo hacemos seguro?
Open Authorization (OAuth) es un estándar abierto que
permite flujos simples de autorización para sitios web o
aplicaciones informáticas.
¿Pero que otra alternativa tengo?
Tu propia Rest Api personalizada
+
Aprovechamos la funcionalidad
CallBack de la REST-API
Cuando creamos nuestra propia llamada API, tenemos
una función CallBack donde podemos jugar con la
seguridad de esta llamada
add_action( 'rest_api_init', function () {
register_rest_route( 'nuevaapi/v1', '/getpost/(?P<username>w+)/(?P<postid>d+)/', array(
'methods' => 'GET',
'callback' => 'testingcall_awesome_func',
'permission_callback' => 'mycall_permission_callback',
) );
} );
Como funciona una
cabecera HTML
Muy sencillo, se pasa a través del HTML un hash o password
requerido para el acceso a nuestra API y se indica como BEARER.
Este código será leído por la función CallBack de la URL
personalizada del WordPress y confirmado con el hash que
habremos creado para el acceso.
function getBearerToken() {
$headers = getAuthorizationHeader();
// HEADER: Obtenemos el token
if (!empty($headers)) {
if (preg_match('/Bearers(S+)/', $headers, $matches)) {
return $matches[1];
}
}
return null;
}
Como confirmamos el acceso
a nuestra REST-API-WP
Ya tenemos un username, un postid y un hash que se
pasará a través de la cabecera para ser confirmado
por nuestra función CallBack
function mycall_permission_callback( WP_REST_Request $request )
{
$usuario = $request[‘username'];
1er paso chequear si el usuario existe
2do paso si el usuario existe obtener el token que tiene para acceder por API
3er paso obtener el bearer de la cabecera con la función getBearerToken()
comparar y retornar true si es igual, false si no.
}
Puedo usar este CallBack personalizado
en las funciones propias de WordPress.
Por supuesto, solo debemos tomar ventaja del filtrado de
API
// con este filtro podemos cambiar algunos datos
add_filter( 'rest_endpoints', function( $endpoints ){
if ( isset( $endpoints['/wp/v2/users'] ) ) {
$endpoints['/wp/v2/users'][0]['permission_callback'] = "mycall_permission_callback";
// O si queremos desabilitar solo esta ruta lo hacemos con:
//unset( $endpoints['/wp/v2/users'] );
}
if ( isset( $endpoints['/wp/'] ) ) {
$endpoints['/'][0]['permission_callback'] = "myapiplugin_permission_callback";
}
return $endpoints;
});
Conclusión
Con estos sencillos pasos, podemos crear nuestra
propia API de acceso simple y seguro por Usuarios,
Cabeceras, aprovechando el uso de las URL’s
personalizadas y las expresiones regulares. Queda de
parte de nuestra imaginación y necesidades crear las
llamadas que necesitemos.
GRACIAS
twitter: @ericjanzei
https://zeidan.info

Más contenido relacionado

Similar a Endpoints Seguros en nuestra Rest-API

WordPress como back-end de nuestras apps
WordPress como back-end de nuestras appsWordPress como back-end de nuestras apps
WordPress como back-end de nuestras appsJaime Fernández
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAbimael Desales López
 
App todo gas: WordPress no es solo para web
App todo gas: WordPress no es solo para webApp todo gas: WordPress no es solo para web
App todo gas: WordPress no es solo para webPaco Marchante
 
Introducción php
Introducción phpIntroducción php
Introducción phparchilaluna
 
Servicios web
Servicios webServicios web
Servicios webitoomac02
 
Servicios web
Servicios webServicios web
Servicios webitoomac02
 
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdfAsegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdfJose Manuel Ortega Candel
 
Explique 7 razones por las cuales considera conveniente el uso de las funcion...
Explique 7 razones por las cuales considera conveniente el uso de las funcion...Explique 7 razones por las cuales considera conveniente el uso de las funcion...
Explique 7 razones por las cuales considera conveniente el uso de las funcion...Adrian Ascanio
 
WordPress, mucho más que un CMS para Blogs!!!
WordPress, mucho más que un CMS para Blogs!!!WordPress, mucho más que un CMS para Blogs!!!
WordPress, mucho más que un CMS para Blogs!!!Daniel Bertinat
 
Sesiones en-php1536
Sesiones en-php1536Sesiones en-php1536
Sesiones en-php1536xib32
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, javaFaby Marcos Solis
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Phputs
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Phputs
 

Similar a Endpoints Seguros en nuestra Rest-API (20)

APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
WordPress como back-end de nuestras apps
WordPress como back-end de nuestras appsWordPress como back-end de nuestras apps
WordPress como back-end de nuestras apps
 
Funciones
FuncionesFunciones
Funciones
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
 
Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables
 
Php!
Php!Php!
Php!
 
App todo gas: WordPress no es solo para web
App todo gas: WordPress no es solo para webApp todo gas: WordPress no es solo para web
App todo gas: WordPress no es solo para web
 
Introducción php
Introducción phpIntroducción php
Introducción php
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdfAsegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
 
Explique 7 razones por las cuales considera conveniente el uso de las funcion...
Explique 7 razones por las cuales considera conveniente el uso de las funcion...Explique 7 razones por las cuales considera conveniente el uso de las funcion...
Explique 7 razones por las cuales considera conveniente el uso de las funcion...
 
WordPress, mucho más que un CMS para Blogs!!!
WordPress, mucho más que un CMS para Blogs!!!WordPress, mucho más que un CMS para Blogs!!!
WordPress, mucho más que un CMS para Blogs!!!
 
Autentificacion sql antonio_hermoso
Autentificacion sql antonio_hermosoAutentificacion sql antonio_hermoso
Autentificacion sql antonio_hermoso
 
Sesiones en-php1536
Sesiones en-php1536Sesiones en-php1536
Sesiones en-php1536
 
Clase 5 php
Clase 5 phpClase 5 php
Clase 5 php
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 

Último

2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdfFernandaHernandez312615
 
locomotas v siclo.ppt de ingenieria de minas
locomotas v siclo.ppt de ingenieria de minaslocomotas v siclo.ppt de ingenieria de minas
locomotas v siclo.ppt de ingenieria de minasMirkaCBauer
 
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsxactividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx241532171
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxPRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxRodriguezLucero
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdfFAUSTODANILOCRUZCAST
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
Historia de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ellaHistoria de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ellajuancamilo3111391
 
MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.imejia2411
 
CamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptxCamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptx241518192
 
Producto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptxProducto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptx46828205
 
El uso de las tic en la vida continúa , ambiente positivo y negativo.
El uso de las tic  en la vida continúa , ambiente positivo y negativo.El uso de las tic  en la vida continúa , ambiente positivo y negativo.
El uso de las tic en la vida continúa , ambiente positivo y negativo.ayalayenifer617
 
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxrodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxssuser61dda7
 
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdfFLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdfYuriFuentesMartinez2
 
3Mayo2023 Taller construcción de Prototipos.pptx
3Mayo2023 Taller construcción de Prototipos.pptx3Mayo2023 Taller construcción de Prototipos.pptx
3Mayo2023 Taller construcción de Prototipos.pptxadso2024sena
 

Último (18)

2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
 
locomotas v siclo.ppt de ingenieria de minas
locomotas v siclo.ppt de ingenieria de minaslocomotas v siclo.ppt de ingenieria de minas
locomotas v siclo.ppt de ingenieria de minas
 
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsxactividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxPRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdf
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
Historia de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ellaHistoria de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ella
 
MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.
 
CamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptxCamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptx
 
Producto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptxProducto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptx
 
El uso de las tic en la vida continúa , ambiente positivo y negativo.
El uso de las tic  en la vida continúa , ambiente positivo y negativo.El uso de las tic  en la vida continúa , ambiente positivo y negativo.
El uso de las tic en la vida continúa , ambiente positivo y negativo.
 
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxrodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
 
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdfFLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
 
3Mayo2023 Taller construcción de Prototipos.pptx
3Mayo2023 Taller construcción de Prototipos.pptx3Mayo2023 Taller construcción de Prototipos.pptx
3Mayo2023 Taller construcción de Prototipos.pptx
 

Endpoints Seguros en nuestra Rest-API

  • 1. Endpoints seguros en nuestra WP-REST-API Eric Zeidan twitter: @ericjanzei https://zeidan.info
  • 2. WP Rest API Si visitamos http://unsitio.algo/wp-json
  • 4. Como aseguramos el bloqueo del acceso a toda la WP-REST-API Siempre hay un plugin Wordfence O con un simple código de PHP en el functions de nuestro tema. // con esto removemos todas las rutas WordPress remove_action( 'rest_api_init', 'create_initial_rest_routes', 99 ); Disable REST API //con estas desabilitamos totalmente la rest-api add_filter(‘rest_enabled’, ‘_return_false’); add_filter(‘rest_jsonp_enabled’, ‘_return_false’);
  • 5. OAuth1 OAuth2 Cabeceras HTML URL Personalizadas ¿Y si lo queremos usar, como lo hacemos seguro? Open Authorization (OAuth) es un estándar abierto que permite flujos simples de autorización para sitios web o aplicaciones informáticas. ¿Pero que otra alternativa tengo? Tu propia Rest Api personalizada +
  • 6. Aprovechamos la funcionalidad CallBack de la REST-API Cuando creamos nuestra propia llamada API, tenemos una función CallBack donde podemos jugar con la seguridad de esta llamada add_action( 'rest_api_init', function () { register_rest_route( 'nuevaapi/v1', '/getpost/(?P<username>w+)/(?P<postid>d+)/', array( 'methods' => 'GET', 'callback' => 'testingcall_awesome_func', 'permission_callback' => 'mycall_permission_callback', ) ); } );
  • 7. Como funciona una cabecera HTML Muy sencillo, se pasa a través del HTML un hash o password requerido para el acceso a nuestra API y se indica como BEARER. Este código será leído por la función CallBack de la URL personalizada del WordPress y confirmado con el hash que habremos creado para el acceso. function getBearerToken() { $headers = getAuthorizationHeader(); // HEADER: Obtenemos el token if (!empty($headers)) { if (preg_match('/Bearers(S+)/', $headers, $matches)) { return $matches[1]; } } return null; }
  • 8. Como confirmamos el acceso a nuestra REST-API-WP Ya tenemos un username, un postid y un hash que se pasará a través de la cabecera para ser confirmado por nuestra función CallBack function mycall_permission_callback( WP_REST_Request $request ) { $usuario = $request[‘username']; 1er paso chequear si el usuario existe 2do paso si el usuario existe obtener el token que tiene para acceder por API 3er paso obtener el bearer de la cabecera con la función getBearerToken() comparar y retornar true si es igual, false si no. }
  • 9. Puedo usar este CallBack personalizado en las funciones propias de WordPress. Por supuesto, solo debemos tomar ventaja del filtrado de API // con este filtro podemos cambiar algunos datos add_filter( 'rest_endpoints', function( $endpoints ){ if ( isset( $endpoints['/wp/v2/users'] ) ) { $endpoints['/wp/v2/users'][0]['permission_callback'] = "mycall_permission_callback"; // O si queremos desabilitar solo esta ruta lo hacemos con: //unset( $endpoints['/wp/v2/users'] ); } if ( isset( $endpoints['/wp/'] ) ) { $endpoints['/'][0]['permission_callback'] = "myapiplugin_permission_callback"; } return $endpoints; });
  • 10. Conclusión Con estos sencillos pasos, podemos crear nuestra propia API de acceso simple y seguro por Usuarios, Cabeceras, aprovechando el uso de las URL’s personalizadas y las expresiones regulares. Queda de parte de nuestra imaginación y necesidades crear las llamadas que necesitemos.