{"id":84184,"date":"2020-06-05T19:42:31","date_gmt":"2020-06-05T17:42:31","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god"},"modified":"2020-06-05T19:42:31","modified_gmt":"2020-06-05T17:42:31","slug":"smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god","title":{"rendered":"P\u0103catele fatale ale securit\u0103\u021bii site-ului: ce am \u00eenv\u0103\u021bat din statisticile scanner-ului de vulnerabilitate pe parcursul anului","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Aproximativ acum un an, am lansat la DataLine <noindex><a rel=\"nofollow\" href=\"https:\/\/www.dtln.ru\/uslugi\/security\/securityscan\">serviciul<\/a><\/noindex> un serviciu pentru c\u0103utarea \u0219i analiza vulnerabilit\u0103\u021bilor \u00een aplica\u021biile IT. La baza serviciului se afl\u0103 solu\u021bia cloud Qualys, despre care <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dataline\/blog\/457768\/\">am discutat deja<\/a><\/noindex>. \u00centr-un an de utilizare a solu\u021biei, am efectuat 291 de scan\u0103ri pentru diferite site-uri \u0219i am acumulat statistici privind vulnerabilit\u0103\u021bile comune \u00een aplica\u021biile web.\u00a0<\/p>\n<p>\u00cen articolul de mai jos, voi ar\u0103ta ce tipuri de sl\u0103biciuni \u00een securitatea site-urilor se ascund \u00een spatele diferitelor niveluri de criticitate. S\u0103 vedem ce vulnerabilit\u0103\u021bi a descoperit scannerul mai des, de ce pot ap\u0103rea \u0219i cum ne putem proteja.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"P\u0103catele fatale ale securit\u0103\u021bii site-ului: ce am \u00eenv\u0103\u021bat din statisticile scanner-ului de vulnerabilitate pe parcursul anului\" src=\"\/wp-content\/uploads\/2020\/06\/3205347a3bcb19c9fd66bbb890f5096d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nToate vulnerabilit\u0103\u021bile aplica\u021biilor web sunt \u00eemp\u0103r\u021bite de Qualys \u00een trei niveluri de criticitate: sc\u0103zut, mediu \u0219i ridicat. Dac\u0103 ne uit\u0103m la distribu\u021bia \u00een func\u021bie de \u201eseriozitate\u201d, pare c\u0103 lucrurile nu sunt chiar at\u00e2t de grave. Vulnerabilit\u0103\u021bile cu un nivel ridicat de criticitate sunt pu\u021bine, majoritatea sunt non-critice:\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"P\u0103catele fatale ale securit\u0103\u021bii site-ului: ce am \u00eenv\u0103\u021bat din statisticile scanner-ului de vulnerabilitate pe parcursul anului\" src=\"\/wp-content\/uploads\/2020\/06\/59ec50a522270db288fb01fb8a41c7c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDar non-critice nu \u00eenseamn\u0103 inofensive. Acestea pot cauza daune serioase.\u00a0<\/p>\n<h2>Topul vulnerabilit\u0103\u021bilor \u201enon-critice\u201d<\/h2>\n<p><\/p>\n<ol>\n<li><b>Vulnerabilit\u0103\u021bi legate de con\u021binutul mixat.<\/b>\n<p>Standardul de securitate pentru site-uri este transferul de date \u00eentre client \u0219i server prin protocolul HTTPS, care suport\u0103 criptarea \u0219i protejeaz\u0103 informa\u021biile de interceptare.\u00a0<\/p>\n<p>Unele site-uri folosesc <i>con\u021binut mixat<\/i>: transmit o parte din date prin protocolul nesecurizat HTTP. Adesea, astfel sunt transmise <i>con\u021binutul pasiv<\/i> \u2013 informa\u021bii care afecteaz\u0103 doar afi\u0219area site-ului: imagini, stiluri CSS. Dar uneori, astfel sunt transmise \u0219i <i>con\u021binutul activ<\/i>: scripturi care controleaz\u0103 comportamentul site-ului. \u00cen acest caz, cu ajutorul unui software special, se poate analiza informa\u021bia venit\u0103 de la server cu con\u021binut activ, modifica r\u0103spunsurile \u00een timp real \u0219i determina ma\u0219ina s\u0103 func\u021bioneze altfel dec\u00e2t a fost g\u00e2ndit\u0103 de creatorii s\u0103i.\u00a0<\/p>\n<p>Browserele versiunilor recente \u00eei avertizeaz\u0103 pe utilizatori c\u0103 site-urile cu con\u021binut mixat nu sunt sigure \u0219i blocheaz\u0103 con\u021binutul. De asemenea, dezvoltatorii de site-uri primesc avertiz\u0103ri din partea browserului \u00een consola acestuia. De exemplu, iat\u0103 cum arat\u0103 \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.mozilla.org\/ru\/docs\/Security\/MixedContent\">Firefox<\/a><\/noindex>:\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"P\u0103catele fatale ale securit\u0103\u021bii site-ului: ce am \u00eenv\u0103\u021bat din statisticile scanner-ului de vulnerabilitate pe parcursul anului\" src=\"\/wp-content\/uploads\/2020\/06\/e075e43f63ee6a41d41949d63da27006.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Ce este periculos<\/b>: Atacatorii folosesc un protocol nesecurizat pentru a intercepta informa\u021biile despre utilizator, a substitui scripturile \u0219i a trimite solicit\u0103ri c\u0103tre site \u00een numele s\u0103u. Chiar dac\u0103 vizitatorul site-ului nu a introdus date, acest lucru nu \u00eel protejeaz\u0103 de <i>phishing <\/i>\u2013 extragerea de informa\u021bii confiden\u021biale prin metode frauduloase. De exemplu, cu ajutorul unui script, utilizatorul poate fi redirec\u021bionat c\u0103tre un site nesigur, care se mascheaz\u0103 ca fiind unul cunoscut. \u00cen anumite cazuri, site-ul mali\u021bios arat\u0103 chiar mai bine dec\u00e2t originalul, iar utilizatorul poate completa de bun\u0103voie formularul \u0219i transmite informa\u021biile confiden\u021biale.\u00a0<\/p>\n<p><b>Ce trebuie s\u0103 \u021bin\u0103 cont un dezvoltator web<\/b>: Chiar dac\u0103 administratorul site-ului a instalat \u0219i configurat un certificat SSL\/TLS, vulnerabilitatea poate ap\u0103rea din cauza factorului uman. De exemplu, dac\u0103 pe una dintre pagini a fost inserat\u0103 un link absolut cu http, \u00een loc de unul relativ, \u0219i \u00een plus nu au fost configurate redirec\u021bion\u0103ri de la http la https.\u00a0<\/p>\n<p>Se poate detecta con\u021binut mixt pe site cu ajutorul browserului: c\u0103ut\u00e2nd \u00een codul surs\u0103 al paginii, citind notific\u0103rile din consola developer-ului. Totu\u0219i, dezvoltatorului i se va \u00eeng\u0103dui s\u0103 scotoceasc\u0103 \u00eendelung \u00een cod. Procesul poate fi accelerat cu ajutoare automatizate de analiz\u0103, de exemplu: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jitbit.com\/sslcheck\/\">SSL Check<\/a><\/noindex>, software gratuit Lighthouse sau software pl\u0103tit Screaming Frog SEO Spider.<\/p>\n<p>De asemenea, vulnerabilitatea poate ap\u0103rea din cauza problemelor cu legacy-code \u2013 codul care a fost mo\u0219tenit. De exemplu, dac\u0103 unele pagini sunt generate printr-un \u0219ablon vechi, unde nu s-a \u021binut cont de trecerea site-urilor la https.\u00a0\u00a0\u00a0\u00a0\n<\/li>\n<li><b>Cookie-uri f\u0103r\u0103 flag-uri \u201eHTTPOnly\u201d \u0219i \u201esecure\u201d.<\/b>\n<p>Atributele \u201eHTTPOnly\u201d protejeaz\u0103 fi\u0219ierele cookie de procesarea prin scripturi, pe care atacatorii le folosesc pentru a fura datele utilizatorilor. Flag-ul \u201esecure\u201d nu permite transmiterea cookie-urilor \u00een mod nesecurizat. Schimbul de date va fi permis doar dac\u0103 pentru trimiterea cookie-urilor se folose\u0219te un protocol securizat HTTPS.\u00a0<\/p>\n<p>Ambele atribute sunt definite \u00een propriet\u0103\u021bile cookie-urilor:<\/p>\n<pre><code class=\"plaintext\">Set-Cookie: Secure; HttpOnly<\/code><\/pre>\n<p>\n<b>Ce este periculos<\/b>: Dac\u0103 dezvoltatorul site-ului nu a specificat aceste atribute, atacatorul poate intercepta informa\u021biile utilizatorului din cookie-uri \u0219i le poate folosi. Dac\u0103 cookie-urile sunt folosite pentru autentificare \u0219i autorizare, el va putea fura sesiunea utilizatorului \u0219i va ac\u021biona pe site \u00een numele s\u0103u.\u00a0<\/p>\n<p><b>Ce trebuie s\u0103 \u021bin\u0103 cont un dezvoltator web<\/b>: \u00cen general, \u00een framework-urile populare, aceste atribute sunt setate automat. Totu\u0219i, verifica\u021bi configura\u021bia serverului web \u0219i activa\u021bi flagul: Set-Cookie HttpOnly; Secure. <\/p>\n<p>Atributul \u201eHTTPOnly\u201d va face cookie-urile invizibile chiar \u0219i pentru propriul dvs. JavaScript.\u00a0\u00a0\n<\/li>\n<li><b>Vulnerabilit\u0103\u021bi bazate pe cale.<\/b>\n<p>Scanerul raporteaz\u0103 o astfel de vulnerabilitate dac\u0103 g\u0103se\u0219te un fi\u0219ier sau un director accesibil public al site-ului cu informa\u021bii poten\u021bial confiden\u021biale. De exemplu, descoperirea fi\u0219ierelor separate cu configura\u021bia sistemului sau accesul la \u00eentreaga sistem de fi\u0219iere. Astfel de situa\u021bii pot ap\u0103rea dac\u0103 permisiunile de acces pe site sunt configurate incorect.<\/p>\n<p><b>Ce este periculos<\/b>: Dac\u0103 sistemul de fi\u0219iere este \u201eexpus\u201d, un atacator poate accesa interfa\u021ba sistemului de operare \u0219i poate \u00eencerca s\u0103 g\u0103seasc\u0103 foldere cu parole, dac\u0103 acestea sunt stocate \u00een format deschis (nu face\u021bi asta!). Sau se pot fura hash-urile parolelor \u0219i se poate \u00eencerca s\u0103 se g\u0103seasc\u0103 parola prin for\u021b\u0103 bruta, de asemenea, se pot \u00eencerca cre\u0219terea privilegiilor \u00een sistem \u0219i avansarea \u00een cadrul infrastructurii.\u00a0\u00a0<\/p>\n<p><b>Ce trebuie s\u0103 \u021bin\u0103 cont un dezvoltator web<\/b>: Nu uita\u021bi de permisiunile de acces \u0219i configura\u021bi platforma, serverul web, aplica\u021bia web astfel \u00eenc\u00e2t s\u0103 nu se poat\u0103 \u201eevada\u201d din directorul web.\n<\/li>\n<li><b>Formulare pentru introducerea datelor confiden\u021biale cu func\u021bia de autocompletare activat\u0103.<\/b>\n<p>Dac\u0103 utilizatorul completeaz\u0103 frecvent formulare pe site-uri, browserul s\u0103u salveaz\u0103 aceste informa\u021bii folosind func\u021bia de autocompletare.\u00a0<\/p>\n<p>Formele de pe site-uri pot include c\u00e2mpuri cu informa\u021bii confiden\u021biale, cum ar fi parolele sau numerele de carduri de credit. Pentru astfel de c\u00e2mpuri, ar trebui s\u0103 dezactiva\u021bi func\u021bia de autocompletare pe site.\u00a0<\/p>\n<p><b>Ce este periculos<\/b>: Dac\u0103 browserul utilizatorului va salva informa\u021bii confiden\u021biale, un atacator le poate intercepta ulterior prin metode precum phishing-ul. Practic, un dezvoltator web care a uitat de acest aspect expune utilizatorii s\u0103i.\u00a0<\/p>\n<p><b>Ce trebuie s\u0103 \u021bin\u0103 cont un dezvoltator web<\/b>: \u00cen acest caz, avem un conflict clasic: confort vs securitate. Dac\u0103 dezvoltatorul web se g\u00e2nde\u0219te la confortul utilizatorului, ar putea alege \u00een mod con\u0219tient autocompletarea. De exemplu, dac\u0103 este important s\u0103 se respecte <noindex><a rel=\"nofollow\" href=\"https:\/\/www.w3.org\/TR\/WCAG21\/\">Directiva privind accesibilitatea con\u021binutului web<\/a><\/noindex> \u2013 recomand\u0103ri pentru accesibilitatea con\u021binutului pentru utilizatorii cu dizabilit\u0103\u021bi.\u00a0<\/p>\n<p>Pentru majoritatea browserelor, func\u021bia de autocompletare poate fi dezactivat\u0103 prin atributul autocompete=\"off\", de exemplu:<\/p>\n<pre><code class=\"plaintext\">\u00a0&lt;body&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;form action=&quot;\/ro\/form\/submit\/&quot; method=&quot;get&quot; autocomplete=&quot;off&quot; data-trp-original-action=&quot;\/form\/submit&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;text&quot; placeholder=&quot;First Name&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;text&quot; id=&quot;lname&quot; placeholder=&quot;Last Name&quot; autocomplete=&quot;on&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;number&quot; placeholder=&quot;Num\u0103rul cardului de cr&eacute;dit&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;submit&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;hidden&quot; name=&quot;trp-form-language&quot; value=&quot;ro&quot;\/&gt;&lt;\/form&gt;\n&nbsp;&nbsp;&lt;\/body&gt;<\/code><\/pre>\n<p>\nDar pentru Chrome, aceasta nu va func\u021biona. Se ocole\u0219te acest lucru prin JavaScript, iar o variant\u0103 a re\u021betei poate fi g\u0103sit\u0103. <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/a\/55045439\">aici<\/a><\/noindex>.\u00a0\n<\/li>\n<li><b>\u00cen codul site-ului nu a fost setat antetul X-Frame-Options.\u00a0<\/b>\n<p>Acest antet influen\u021beaz\u0103 etichetele frame, iframe, embed sau object. Cu ajutorul acestuia, se poate interzice complet integrarea site-ului \u00een interiorul unui frame. Pentru aceasta, este necesar s\u0103 se specificze valoarea X-Frame-Options: deny. Sau se poate specifica X-Frame-Options: sameorigin, atunci integrarea \u00een iframe va fi disponibil\u0103 doar pe domeniul dumneavoastr\u0103.<\/p>\n<p><b>Ce este periculos<\/b>: Absen\u021ba unui astfel de antet poate fi utilizat\u0103 pe site-uri d\u0103un\u0103toare pentru <i>clickjacking<\/i>. \u00centr-un astfel de atac, infractorul creeaz\u0103 un frame transparent deasupra butoanelor \u0219i p\u0103c\u0103le\u0219te utilizatorul. De exemplu: bandi\u021bii plaseaz\u0103 \u00eentr-un frame pe site-ul paginile re\u021belelor sociale. Utilizatorul crede c\u0103 d\u0103 clic pe un buton de pe acest site. \u00cen schimb, clicul este interceptat \u0219i trimite solicitarea utilizatorului c\u0103tre re\u021beaua social\u0103, unde exist\u0103 o sesiune activ\u0103. Astfel, infractorii trimite spam \u00een numele utilizatorului sau cresc num\u0103rul de abona\u021bi \u0219i aprecieri.\u00a0<\/p>\n<p>Dac\u0103 nu se interzice aceast\u0103 posibilitate, infractorul poate plasa butonul aplica\u021biei dumneavoastr\u0103 pe un site d\u0103un\u0103tor. El poate fi interesat de programul dumneavoastr\u0103 de referin\u021b\u0103 sau de utilizatorii dumneavoastr\u0103.\u00a0\u00a0<\/p>\n<p><b>Ce trebuie s\u0103 \u021bin\u0103 cont un dezvoltator web<\/b>: Vulnerabilitatea poate ap\u0103rea dac\u0103 X-Frame-Options cu o valoare conflictual\u0103 este setat pe serverul web sau pe un echilibror de \u00eenc\u0103rc\u0103tur\u0103. \u00cen acest caz, serverul \u0219i echilibrorul de \u00eenc\u0103rc\u0103tur\u0103 vor pur \u0219i simplu suprascrie antetul, deoarece au o prioritate mai mare comparativ cu codul p\u0103r\u021bii de backend.\u00a0\u00a0<\/p>\n<p>Valorile deny \u0219i sameorigin ale antetului X-Frame-Options vor \u00eempiedica func\u021bionarea webvizorului Yandex. Pentru a permite utilizarea iframe-ului pentru webvizor, este necesar s\u0103 scrie\u021bi o regul\u0103 separat\u0103 \u00een set\u0103ri. De exemplu, pentru nginx, se poate configura astfel:<\/p>\n<pre><code class=\"plaintext\">http{\n...\n map $http_referer $frame_options {\n \"~webvisor.com\" \"ALLOW-FROM http:\/\/webvisor.com\";\n default \"SAMEORIGIN\";\n }\n add_header X-Frame-Options $frame_options;\n...\n}\n\n<\/code><\/pre>\n<p>\n<\/li>\n<li><b>Vulnerabilit\u0103\u021bi PRSSI (Path-relative stylesheet import).\u00a0\u00a0<\/b>\n<p>Aceasta este o vulnerabilitate \u00een stilurile site-ului. Apare dac\u0103 se folosesc linkuri relative pentru accesarea fi\u0219ierelor de stil, de tip href=\"\/somefolder\/styles.css\/\". Un atacator va profita de acest lucru dac\u0103 g\u0103se\u0219te o modalitate de a redirec\u021biona utilizatorul c\u0103tre o pagin\u0103 mali\u021bioas\u0103. Pagina va insera un link relativ \u00een URL-ul s\u0103u, imit\u00e2nd astfel apelul c\u0103tre stiluri. Se va genera un request asem\u0103n\u0103tor cu badsite.ru\/...\/somefolder\/styles.css\/, care, sub aparen\u021ba unui stil, poate efectua ac\u021biuni mali\u021bioase.\u00a0<\/p>\n<p><b>Ce este periculos<\/b>: Un escroc va putea profita de aceast\u0103 vulnerabilitate dac\u0103 g\u0103se\u0219te o alt\u0103 bre\u0219\u0103 de securitate. Ca urmare, se pot fura datele utilizatorilor din cookie-uri sau tokenuri.<\/p>\n<p><b>Ce trebuie s\u0103 \u021bin\u0103 cont un dezvoltator web<\/b>: Seta\u021bi antetul X-Content-Type-Options: nosniff. \u00cen acest caz, browserul va verifica tipul de con\u021binut pentru stiluri. Dac\u0103 tipul difer\u0103 de text\/css, browserul va bloca cererea.\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>Vulnerabilit\u0103\u021bi critice<\/h2>\n<p><\/p>\n<ol>\n<li><b>Pagina cu c\u00e2mp pentru parol\u0103 este livrat\u0103 de pe server printr-un canal nesecurizat (HTML form containing password field(s) is served over HTTP).<\/b>\n<p>R\u0103spunsul de la server pe un canal necriptat este vulnerabil la atacuri de tip \u00abMan in the middle\u00bb. Un atacator poate intercepta traficul \u0219i se poate interpu \u00eentre client \u0219i server, c\u00e2nd pagina este trimis\u0103 de la server la client.\u00a0<\/p>\n<p><b>Ce este periculos<\/b>: Un escroc va putea \u00eenlocui pagina \u0219i trimite utilizatorului un formular pentru datele confiden\u021biale, care vor fi trimise pe serverul atacatorului.\u00a0<\/p>\n<p><b>Ce trebuie s\u0103 \u021bin\u0103 cont un dezvoltator web<\/b>: Unele site-uri \u00een loc de parol\u0103 trimit utilizatorilor un cod unic pe email\/telefon. \u00cen acest caz, vulnerabilitatea nu este at\u00e2t de critic\u0103, dar mecanismul va complica via\u021ba utilizatorilor.\n<\/li>\n<li><b>Trimiterea formularului cu numele de utilizator \u0219i parola printr-un canal nesecurizat (Login Form Is Not Submitted Via HTTPS).<\/b>\n<p>\u00cen acest caz, de la utilizator pe server, printr-un canal necriptat este trimis un formular cu numele de utilizator \u0219i parola.<\/p>\n<p><b>Ce este periculos<\/b>: Spre deosebire de cazul anterior, aceasta este deja o vulnerabilitate critic\u0103. Este mai u\u0219or s\u0103 se intercepteze datele confiden\u021biale, deoarece nu este nevoie s\u0103 scrie\u021bi niciun cod pentru aceasta.\u00a0\n<\/li>\n<li><b>Utilizarea bibliotecilor JavaScript cu vulnerabilit\u0103\u021bi cunoscute.<\/b>\n<p>\u00cen timpul scan\u0103rii, cea mai utilizat\u0103 bibliotec\u0103 a devenit jQuery, cu un num\u0103r mare de versiuni. Fiecare dintre aceste versiuni are cel pu\u021bin una sau mai multe vulnerabilit\u0103\u021bi cunoscute. Impactul poate fi variat \u2013 depinde de natura vulnerabilit\u0103\u021bii.<\/p>\n<p><b>Ce este periculos<\/b>: Pentru vulnerabilit\u0103\u021bile cunoscute exist\u0103 exploatative, de exemplu, cele:<\/p>\n<p><img decoding=\"async\" alt=\"P\u0103catele fatale ale securit\u0103\u021bii site-ului: ce am \u00eenv\u0103\u021bat din statisticile scanner-ului de vulnerabilitate pe parcursul anului\" src=\"\/wp-content\/uploads\/2020\/06\/4e9ebec0ae735aafd28f5e6b1a806406.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Ce trebuie s\u0103 \u021bin\u0103 cont un dezvoltator web<\/b>: Revenirea periodic\u0103 la ciclu: c\u0103utarea vulnerabilit\u0103\u021bilor cunoscute - rezolvarea - verificarea. Dac\u0103 utiliza\u021bi biblioteci \u00eenvechite con\u0219tient, de exemplu pentru a sprijini browserele mai vechi sau pentru a economisi bugetul, c\u0103uta\u021bi posibilitatea de a elimina vulnerabilit\u0103\u021bile cunoscute.\u00a0\n<\/li>\n<li><b>Scripturi intersite (XSS).\u00a0<\/b><br \/>\nCross-Site Scripting (XSS), sau scripturi \u00eentre site-uri, reprezint\u0103 atacuri asupra aplica\u021biei web, prin care \u00een baza de date apare un cod mali\u021bios. Dac\u0103 Qualys g\u0103se\u0219te o astfel de vulnerabilitate, \u00eenseamn\u0103 c\u0103 un poten\u021bial atacator poate injecta sau a injectat deja un script js \u00een codul site-ului pentru a desf\u0103\u0219ura ac\u021biuni mali\u021bioase.<\/p>\n<p><b>XSS stocate (Stored XSS)<\/b> sunt mai periculoase, deoarece scriptul este injectat pe server \u0219i este executat de fiecare dat\u0103 c\u00e2nd se deschide pagina atacat\u0103 \u00een browser.<\/p>\n<p><b>XSS reflectate (Reflected XSS)<\/b> sunt mai simple de realizat, deoarece un script mali\u021bios poate fi injectat \u00een cererea HTTP. Aplica\u021bia prime\u0219te cererea HTTP, nu verific\u0103 datele, le \u00eempacheteaz\u0103 \u0219i le trimite imediat. Dac\u0103 atacatorul intercept\u0103 traficul \u0219i insereaz\u0103 un script de tipul <\/p>\n<pre><code class=\"plaintext\">&lt;script&gt;\/*+\u0447\u0442\u043e+\u0442\u043e+\u043f\u043b\u043e\u0445\u043e\u0435+*\/&lt;\/script&gt; <\/code><\/pre>\n<p>\natunci un request mali\u021bios va pleca \u00een numele clientului.<\/p>\n<p>Un exemplu elocvent de XSS: js-snifferi care imit\u0103 pagini pentru introducerea CVC, date de expirare a cardului etc.\u00a0<\/p>\n<p><b>Ce trebuie s\u0103 \u021bin\u0103 cont un dezvoltator web<\/b>: \u00cen antetul Content-Security-Policy folosi\u021bi atributul script-src, pentru a permite browserului client s\u0103 \u00eencarce \u0219i s\u0103 execute doar cod provenit dintr-o surs\u0103 de \u00eencredere. De exemplu, script-src 'self' va albi toate scripturile provenite doar de pe site-ul nostru.\u00a0<br \/>\nCea mai bun\u0103 practic\u0103 este codul inline: permite\u021bi doar javascript inline folosind valoarea unsafe-inline. Aceast\u0103 valoare permite utilizarea js\/css inline, dar nu interzice conectarea fi\u0219ierelor js. \u00cen combina\u021bie cu script-src 'self', interzicem executarea scripturilor externe.<\/p>\n<p>Asigura\u021bi-v\u0103 c\u0103 \u00eenregistra\u021bi toate cererile prin report-uri \u0219i monitoriza\u021bi tentativele de injectare pe site.\n<\/li>\n<li><b>Injec\u021biile SQL.<\/b><br \/>\nVulnerabilitatea indic\u0103 posibilitatea inject\u0103rii pe site a unui cod SQL, care se adreseaz\u0103 direct bazei de date a site-ului. O injec\u021bie SQL este posibil\u0103 dac\u0103 datele utilizatorului nu sunt escapate: nu sunt verificate pentru corectitudine \u0219i sunt utilizate imediat \u00een cerere. De exemplu, acest lucru se \u00eent\u00e2mpl\u0103 dac\u0103 un formular de pe site nu verific\u0103 conformitatea introducerii cu tipul de date.\u00a0<\/p>\n<p><b>Ce este periculos<\/b>: Dac\u0103 un atacator introduce o cerere SQL \u00een acest formular, poate provoca c\u0103derea bazei de date sau poate dezv\u0103lui informa\u021bii confiden\u021biale.\u00a0<\/p>\n<p><b>Ce trebuie s\u0103 \u021bin\u0103 cont un dezvoltator web<\/b>: Nu ave\u021bi \u00eencredere \u00een ceea ce vine din browser. Trebuie s\u0103 v\u0103 proteja\u021bi at\u00e2t pe partea clientului, c\u00e2t \u0219i pe partea serverului.\u00a0<\/p>\n<p>Pe partea clientului, scrie\u021bi verific\u0103ri ale c\u00e2mpurilor folosind JavaScript.\u00a0<\/p>\n<p>Func\u021biile \u00eencorporate \u00een cadrele populare ajut\u0103 de asemenea la escaparea caracterelor suspicioase pe server. Este recomandat s\u0103 folosi\u021bi interog\u0103ri parametrizate c\u0103tre baze de date pe server.<\/p>\n<p>Determina\u021bi exact unde are loc interac\u021biunea cu baza de date \u00een aplica\u021bia web.\u00a0<\/p>\n<p>Interac\u021biunea apare atunci c\u00e2nd ob\u021binem informa\u021bii: o solicitare cu id (schimbare id), crearea unui nou utilizator, un nou comentariu \u2013 \u00eenregistr\u0103ri noi \u00een baza de date. Aici pot ap\u0103rea injec\u021bii SQL. Chiar dac\u0103 \u0219tergem o \u00eenregistrare din baz\u0103, o injec\u021bie SQL este posibil\u0103.\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>Recomand\u0103ri generale<\/h2>\n<p>\n<b>Nu inventa\u021bi bicicleta \u2013 utiliza\u021bi cadre testate.<\/b>. \u00cen general, cadrele populare sunt mai sigure. Pentru .NET \u2013 ASP.NET MVC \u0219i ASP.NET Core, pentru Python \u2013 Django sau Flask, pentru Ruby \u2013 Ruby on Rails, pentru PHP \u2013 Symfony, Laravel, Yii, pentru JavaScript \u2013 Node.JS-Express.js, pentru Java \u2013 Spring MVC.<\/p>\n<p><b>Urm\u0103ri\u021bi actualiz\u0103rile furnizorului \u0219i actualiza\u021bi regulat.<\/b>. O vulnerabilitate va fi g\u0103sit\u0103, apoi va fi scris un exploit, va fi f\u0103cut public, \u0219i totul se va repeta. Abona\u021bi-v\u0103 la actualiz\u0103rile versiunilor stabile de la furnizorul de software.<\/p>\n<p><b>Verifica\u021bi drepturile de acces.<\/b>. Din perspectiva serverului, trata\u021bi \u00eentotdeauna codul dumneavoastr\u0103 ca \u0219i cum totul, de la prima p\u00e2n\u0103 la ultima liter\u0103, ar fi fost scris de cel mai detestat inamic al vostru, care vrea s\u0103 sparg\u0103 site-ul \u0219i s\u0103 compromit\u0103 integritatea datelor dumneavoastr\u0103. Mai ales c\u0103, uneori, chiar a\u0219a este.<\/p>\n<p><b>Folosi\u021bi clonuri, medii de testare, \u0219i abia apoi lansa\u021bi \u00een produc\u021bie.<\/b>. Aceasta va ajuta, \u00een primul r\u00e2nd, s\u0103 evita\u021bi erorile \u0219i problemele \u00een mediul de produc\u021bie: mediul de produc\u021bie genereaz\u0103 venituri, iar oprirea lui este critic\u0103. C\u00e2nd ad\u0103uga\u021bi, corecta\u021bi sau \u00eenchide\u021bi orice problem\u0103, ar trebui s\u0103 efectua\u021bi lucr\u0103rile \u00eentr-un mediu de testare, s\u0103 verifica\u021bi func\u021bionalitatea \u0219i vulnerabilit\u0103\u021bile g\u0103site, apoi s\u0103 planifica\u021bi lucr\u0103rile cu mediul de produc\u021bie.\u00a0<\/p>\n<p><b>Proteja\u021bi aplica\u021bia web prin <noindex><a rel=\"nofollow\" href=\"https:\/\/www.dtln.ru\/uslugi\/security\/firewall\">Web Application Firewall<\/a><\/noindex> \u0219i integra\u021bi rapoartele de la scannerul de vulnerabilit\u0103\u021bi cu acesta.<\/b>. De exemplu, \u00een DataLine se utilizeaz\u0103 Qualys \u0219i FortiWeb ca leg\u0103tur\u0103 de servicii.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dataline\/blog\/505274\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u0432 DataLine \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0418\u0422-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445. \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u2013 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 Qualys, \u043f\u0440\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438. \u0417\u0430 \u0433\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u043b\u0438 291 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u0438 \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c \u0432 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.\u00a0 \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0438\u0436\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":84185,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-84184","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u0432 DataLine \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0418\u0422-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u043c\u0435\u0440\u0442\u043d\u044b\u0435 \u0433\u0440\u0435\u0445\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0441\u0430\u0439\u0442\u0430: \u0447\u0442\u043e \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0441\u043a\u0430\u043d\u0435\u0440\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0437\u0430 \u0433\u043e\u0434 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u0432 DataLine \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0418\u0422-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-05T17:42:31+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-05T17:42:31+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47P\u0103catele capitale ale securit\u0103\u021bii site-ului: ce am \u00eenv\u0103\u021bat din statisticile scannerului de vulnerabilit\u0103\u021bi pe parcursul anului | ProHoster","description":"Aproape un an \u00een urm\u0103, am lansat \u00een DataLine un serviciu pentru c\u0103utarea \u0219i analiza vulnerabilit\u0103\u021bilor \u00een aplica\u021biile IT.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u043c\u0435\u0440\u0442\u043d\u044b\u0435 \u0433\u0440\u0435\u0445\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0441\u0430\u0439\u0442\u0430: \u0447\u0442\u043e \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0441\u043a\u0430\u043d\u0435\u0440\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0437\u0430 \u0433\u043e\u0434 | ProHoster","og:description":"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u0432 DataLine \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0418\u0422-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/smertnye-grehi-bezopasnosti-sajta-chto-my-uznali-iz-statistiki-skanera-uyazvimostej-za-god","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-05T17:42:31+00:00","article:modified_time":"2020-06-05T17:42:31+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"84184","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:03:50","updated":"2022-09-30 12:56:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/84184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=84184"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/84184\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/84185"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=84184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=84184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=84184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}