Nie je to tak dávno, čo som objavil v svojej aplikácií bezpečnostnú chybu. V podstate umožňovala vložiť do aplikácie HTML kód, ktorý sa následne spustil. Chyba nebola vážna bezpečnostná trhlina, nakoľko systém neumožňoval spustiť javascript alebo nejaký skutočne nebezpečný kód. Aj napriek tomu sa mi podarilo zmeniť farbu textu. Ako sa z tohto prípadu môžeme poučiť?
Neverte predpokladom ale faktom
Chybou, ktorej som sa dopustil bolo, že som predpokladal istú funkčnosť danej funkcie. Inými slovami som čakal, že ma dostatočne zabezpečí, pretože som len predpokladal ako funguje. Dokumentácia k funkcií nebola bohatá a na svoju chybu som prišiel až po prečítaní zdrojového kódu. Keď ide o bezpečnosť predpoklady, nie sú na mieste.
Testujte, testujte a testujte veľa
Na chybu som narazil pri testovaní. Menil som totiž svoj zabezpečovací mechanizmus. Ak by som ho netestoval, na chybu by som nikdy neprišiel. Preto predtým, než aplikáciu vypustíte na trh, uistite sa, že ste ju dostatočne otestovali. Zamedzíte tak chybám ako bezpečnostným tak i funkčným.
Obmedzujte výskyt chýb na minimum
Aj napriek tomu, že sa chyba vyskytla, neumožňovala útočníkovi spustiť nič nebezpečného. Keď navrhujete aplikáciu rátajte s tým, že vám niektorá vrstvy zlyhá. V mojom prípade neboli dostatočne ošetrené vstupy, ale obmedzenie na 15 znakov v užívateľskom mene spôsobilo neschopnosť zmeny farby textu, nie ešte napísať nejaký javascript. Zároveň každý vstup prešiel kontrolou, v ktorej sa z neho odstránili všetky tágy, parametre a všetky možnosti spustenia XSS kódu. To je už v podstate dostatočné zabezpečenie (ale ja som s nim nebol spokojný).
Riešte bezpečnosť na všetkých vrstvách
Výsledkom nájdenej chyby bolo prepísanie bezpečnosti, pričom sa momentálne rieši aj pri vpisovaní dát aj pri výpise. Ak by jedna alebo druhá vrstva zlyhala, stále je stránka dostatočne zabezpečená. Riešte bezpečnosť všade kde Vás napadne, rátajte so zlyhaním a zamedzíte výskyt chýb na minimum.
Záver
Na záver by som chcel povedať ešte niečo pozitívne. Majte radosť zo svojej práce. Zakončím výrokom jedného múdreho muža: ‘Každí robí chyby, rozdiel medzi múdrym a hlúpym je v tom, že múdry stále nové.’ Prajem pekný deň!