Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 2) No te deje entrar por no estar autorizado.
- -apiserver.local/card/credit: 4, 6
- Se agregaron cabeceras para que el recurso de una respuesta unauthorized //No funcionó
- Se agregó el mensaje al usuario 401 Unauthorized
- #Prohibir el acceso al recurso
- header("HTTP/1.1 401 Unauthorized");
- header("Content-Type: text/html; charset=utf-8");
- exit('HTTP/1.1 401 No Autorizado');
- 5) Hacer en el recurso card/credit que se restrinja el acceso por autenticación,tomando el ejemplo
- apiserver.local/usuario/read/arg:se espera que el recurso responda HTTP/1.1 401 Unauthorized
- #Pregunta ¿esta autorizado?, no entonces prohibe el accceso
- if(!isset(apache_request_headers()["SessionID"])) {
- header("HTTP/1.1 401 Unauthorized");
- header("Content-Type: text/html; charset=utf-8");
- exit('HTTP/1.1 401 No Autorizado');
- }
- ---EXTRA---
- 6) Mandar cabeceras de autorización ligado a la pregunta ¿Esta autorizado?, sí...
- -apiclient.local:apiclient/get:73
- #Mandar cabeceras de autorizado
- curl_setopt($ch, CURLOPT_HTTPHEADER, ['SessionID: 1234']);
- 7) Dejar de hardcodear 1234 y cambiarlo por una variable cualquiera
- #apiclient.local:apiclient/get:71,75
- $str = "1234";
- curl_setopt($ch, CURLOPT_HTTPHEADER, ["SessionID: $str"]);
- 8) Una función debe de tener una unica responsabilidad, por metodo de extracción se manda la respon-
- sabilidad ajena a otra función
- #apiserver.local:card/credit:4
- $this->helper();
- #apiserver.local:card/helper:10-17
- function helper() {
- #sí no existe sesión, rescurso restringido
- if(!isset(apache_request_headers()["SessionID"])) {
- header("HTTP/1.1 401 Unauthorized");
- header("Content-Type: text/html; charset=utf-8");
- exit('HTTP/1.1 401 No Autorizado');
- }
- }
- 9) Se obtiene un ejemplo de una cadena bien formateada de Sessión id y se pone como comentario
- #apiserver.local:card/helper:12
- #'SessionID: nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",opaque="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"'
- 10) La siguiente validación en caso de que SessionId exista, es si en la cadena existe nonce y opaque
- y están formateados, sí no responde no autorizado
- #if(!nonce_opaque_exists()) {
- #apiserver.local:card/credit:23-25
- header("HTTP/1.1 401 Unauthorized");
- header("Content-Type: text/html; charset=utf-8");
- exit('HTTP/1.1 401 No Autorizado');
- #}
- 11) se repite código, al responder no autorizado, esto hace que se refactorice generando otra función
- cuando se generá una nueva función se pone arriba
- #apiserver.local:card/credit:10-14
- function response_unauthorized(){
- header("HTTP/1.1 401 Unauthorized");
- header("Content-Type: text/html; charset=utf-8");
- exit('HTTP/1.1 401 No Autorizado');
- }
- #apiserver.local:card/credit:20
- $this->response_unauthorized();
- 12) Se va a necesitar llamar varias veces a función "apache_request_headers()["SessionID"])" en estos
- casos se almacena previamente en una variable.
- #apiserver.local:card/credit:19
- $sessionid = @apache_request_headers()["SessionID"];
- if(!$sessionid) {
- ...
- 13) Refactorizando linea 20
- if(!$sessionid) $this->response_unauthorized();
- 14) Validando si no existe nonce en cabeceras, responde no autorizado.
- #apiserver.local:card/helper:19
- if(strpos($sessionid, "nonce") === FALSE) $this->response_unauthorized(); #validar que nonce este en la cadena
- 15) Realizar pruebas, desde el cliente verificar que no deje pasar cuando se manda "SessionId: 1234"
- y que deje pasar cuando se manda el nonce "SessionId: nonce"
- #2018-09-17
- 16) Válidando si es que existe opaque en las cabeceras.
- #apiserver.local:card/helper:20
- if(strpos($sessionid, "opaque") === FALSE) $this->response_unauthorized(); #validar que opaque este en la cadena
- #2018-09-17
- 17) Se completa el 'código duro" en la llamada, en este caso se pone el llamado completo, y verificar
- que sirva completamente.
- $str = 'SessionID: nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",opaque="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"'
- #2018-09-17
- 18) Se obtienen nonce y opaque directamente de la cabecera recibida "SessionID"
- #Parsear cabecera y recibir nonce y opaque
- @list($nonce, $opaque) = explode(',', $sessionid);
- $nonce = str_replace('nonce=', '', $nonce);
- $opaque = str_replace('opaque=', '', $opaque);
- #2018-09-20
- 19)Objetivo: verificar que el valor de nonce y opaque sea igual que el que ya se tiene.
- #Hardcodear valor nonce y opaque en apiserver.local
- $_nonce = "a1b2c3"; #apiserver.local:card/helper:29
- $_opaque = "abc123"; #apiserver.local:card/helper:30
- 20)Verificar que nonce sea igual al que el que ya se tiene
- #verificar que nonce sea igual al que ya se tiene
- if($nonce !== $_nonce) $this->response_unauthorized(); #apiserver.local:card/helper:33
- 21)Verificar que opaque sea igual al que el que ya se tiene
- #verificar que opaque sea igual al que ya se tiene
- if($opaque !== $_opaque) $this->response_unauthorized(); #apiserver.local:card/helper:34
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement