In mare parte acesta metoda este mai mult un design bug care are un potential foarte mare . Se baseaza mai mult pe un "delay" comparativ si se foloseste in cryptologie sau in aplicati offline/online: -Cu un delay in logica executie a unei anumite functi intr-o aplicatie se poate identifica functia respectiva. Dar am gasit o alta intrebuinta pentru testarea api-urilor de tip web care se bazeaza pe un echo din server side. Avem urmatorul caz fictiv: Parametri: =============================== var api = 'domeniu-fictiv.biz/api/echo.php?nume=Popescu' var Draspuns = 'orasul=fictiva&strada=fictiva&nr=fictiva&bloc=fictiva&scara=fictiva&judet=fictiva' var Nraspuns = 'Nume incorect' var logat = 'domeniu-fictiv.biz/account.php' var nelogat = 'domeniu-fictiv.biz/main.php' Perspectiva user-ului: =============================== Domnul Popescu isi viziteaza site-ul de matrimoniale ,apeland din broswer bookmark-ul cu adresa 'logat' . -Daca nu este autentificat , site-ul il redirectioneaza catre 'nelogat' pentru a se autentifica (timpul redirectionari este de 4 sec ) dupa care mai face un redirect spre 'logat' . -Daca este autentificat (onload-ul pagina este de 1 sec ) , nu face nici un redirect in plus. Odata autentificat site-ul apeleaza 'api' pentru sustragerea informatilor 'Draspuns': -Daca are numele Popescu , va afisa 'Draspuns' (timpul echo-ului 10 sec) -Daca nu are numele Popescu , va afisa 'Nraspuns' (timpul echo-ului 5 sec) Perspectiva atacatorului: =============================== Verificarea user-ului daca este autentificat se face : 1) efectuand un request prin user , catre 'logat' verificand daca face un redirect spre 'nelogat' Prin redirectionare se poate verifica daca este logat prin "load time"-ul redirectionari . Daca "load time"-ul este de 4 sec atunci nu este autentificat. Daca este de 1 sec. atunci este autentificat. 2) al 2-lea request va fi catre 'api' dar cu parametru: "nume=Smith' La acest request echo-ul de la 'api' va fi 'Nraspuns' si "load time"-ul procesari de catre server este de 5 secunde. Aceasta variatie se poate masura din nou prin "load time" procesari echo-ului. Atacatorul continua cu un "dictionary attack" sa ghiceasca numele . Concluzie: =============================== Orice discrepante in logica executiei a unui api poate sa fie masurata daca variatia este mare sau constanta. Aflarea "Load Time"-ul este una mai delicata,metoda mea este pornirea unui javascript timer la incarcarea pagini (prima valoare T0) , requestul sa il introduc intr-un < img scr > si cu onerror pentru oprirea timer-ul (a 2-a valoare T1). T1 - T0 = "load-time"-ul Acesta este un caz fictiv harmless , mai mult este incadrat pe "Information Disclosure" dar se poate face mult mai multe . Aceasta metoda nu are un standart , este egala cu clickjacking sau XSSI . Depinde de api-ul respectiv si de parametri pentru stabilirea rezultatului final. Note: Aceasta metoda depinde foarte mult de: - browser , deoarece nu este cross browser - extentile instalate in browser , poate sa influente mult "load time"-ul - arhitectura os-ul (cpu/gpu) Sfaturi: -Pentru prima valoarea,eu am ajuns la concluzia ca este o metoda buna de a face multe refresh-uri pentru cache-uirea pagini . -Evitarea a multor iframe-uri . -Pornirea timer-ului trebuie sa fie simultan cu incarcarea pagini.