User Experience (UX) jest bardzo ważnym tematem w informatyce. Dotyczy nie tylko aplikacji mobilnych ale i portali internetowych czy aplikacji komputerowych. Często właśnie od tego jak aplikacja jest "odbierana" przez użytkowników zależy jej powodzenie. Jest mnóstwo przykładów programów czy portali, których UX zdecydował o sukcesie. Każdy z nas woli korzystać z aplikacji 'intuicyjnych' i prostych.
Z drugiej jednak strony często przy tworzeniu aplikacji trzeba sobie postawić pytanie: czy wygoda użytkownika nie wiąże się z ograniczeniem naszego kodu w innym aspekcie? Często tworząc aplikacje 'debiloodporną' ograniczamy jej funkcjonowanie co może powodować spore błędy. Takie ograniczenia mogą też powodować problemy z bezpieczeństwem. Mogą pojawiać się luki, które mogą być potencjalnym celem dla hakerow. I o tym właśnie będzie dzisiejszy post.
Zajmiemy się znów ekranem logowania.
Wyobraźcie sobie aplikacje lub portal , z którego nie korzystacie zbyt często. Wchodzicie na niego i nie do końca pamiętacie jakiego maila użyliście podczas rejestracji. Wpisujecie swój pierwszy mail, podajecie hasło i... I strona informuje Was, że ten adres nie istnieje w bazie. Wiecie już, że ten adres jest zły, możecie szukać dalej... Świetne z perspektywy użytkownika- podpowiedź, że próbuje sie zalogować ze złymi danymi.
Ostatnio na stronie niebezpiecznik.pl mogliście przeczytać o podobnym incydencie: z Krakowską Kartą Miejską w roli głównej. Użytkownik tworząc odpowiedniego bota mógł uzyskać listę aktywnych numerów kart, po czym w drugim systemie mógł się zalogować w drugim systemie. Jak widać błąd wydaje sie tak banalny, że nie do popełnienia a jednak się zdarza. Zainteresowanych odsyłam do: Www.niebezpiecznik.pl.
Ale teraz popatrzmy na to od strony bezpieczeństwa. Jesteśmy hakerami, którzy chcą wykraść dane użytkowników tego portalu. Wiedząc o mechanizmie opisanym powyżej wykorzystujemy tzw. Atak brutal force czyli piszemy bota, który próbuje sie zalogować na wszelkie mozliwe adresy e-mail (ograniczając je Np do domeny gmail albo hotmail). Po pewnym czasie mamy gotową bazę adresów e-mail... Jeśli potrzebowaliśmy tylko adresów e-mail bo chcieliśmy np rozesłać spam- mamy wszystko. Jeśli chcemy jednak mieć też dostęp do tych kont- powtarzamy atak, podając tym razem poprawny adres e-mail i sprawdzając hasła. Jeśli portal nie ma systemów, które wykryją nietypowy ruch- po pewnym czasie mamy tez hasła...Co będzie potem sami możecie przewidzieć.
A teraz poszukajmy sytuacji gdy to bezpieczeństwo niekorzystnie wpływa na UX. Zróbmy prosty test na aplikacji (moze być portal bankowy, portal sprzedażowy) zalogujmy się bez zaznaczonej opcji: Pamiętaj mnie, a następnie chodźmy na kawę, albo na obiad... Tak, zostawmy aplikacje na kilka godzin samą sobie. Najcześciej po pewnym czasie zostaniemy automatycznie wylogowani niejednokrotnie tracąc swoją niezapisaną prace. Czasem zdarza się też, że niedoświadczeni programiści nie obsługują tego scenariusza i wtedy wychodzą często ciekawe błędy.
Jak widzicie choć jakość często kojarzona jest z bezpieczeństwem i komfortem użytkowania to czasem nie jest mozliwe pogodzenie tych dwóch opcji. Wtedy przede wszystkim twórcy oprogramowania (zarówno testerzy jak i deweloperzy) powinni zadać sobie pytanie o to jakie dane zabezpieczają i na czym im bardziej zależy.
Kończymy na razie rozważania na temat UX vs. Bezpieczeństwo ale możecie być pewni, że to nie jest ostatnie słowo w tym temacie.