Oszukiwanie na quizach

Wstęp

Postanowiłem utworzyć ciąg artykułów o złych praktykach programowania, bo bardzo często spotykam się z błędami aplikacji, z których korzystają setki, czasem nawet tysiące osób. Przez takie postępowanie użytkownicy się denerwują, bo nie można zrozumieć co jest napisane w aplikacji, lub jest ona niewystarczająco bezpieczna i podatna na włamania. Przeczytaj dalej i przekonaj się, że oszukiwanie na quizach nie jest takie trudne.

O co chodzi?

Dzisiaj przeglądając porannego Facebooka znalazłem link do quizów, ten który rozwiązywałem dotyczył znajomości przepisów ruchu drogowego i miał rzekomo określić mój stopień zaawansowania jako kierowca (link). Mam prawo jazdy od sześciu lat i uważam się za dobrego kierowcę, ale gdy dotarłem do źle zredagowanego pytania to nawet Michael Schumacher nie wiedziałby jak zareagować.

Jak widać odpowiedzenie na to pytanie nie jest łatwe tym bardziej, że prawidłowej odpowiedzi nie widać, a mamy za to dwie powtarzające się i to złe. Także z probabilistyki łatwo wyliczyć mamy 50% szans na trafienie w prawidłową odpowiedź, co zaważa już na naszym wyniku i cały quiz jest bezsensowny. Postanowiłem stawić temu czoła i zobaczyć co kryje się w kodzie. Uruchamiamy konsolę.

Znalazłem w strukturze HTML te trzy przyciski i moją uwagę przykuł jeden parametr. Zwróć uwagę, że data-score ma dwie wartości – zero, lub jeden. Zero pojawia się w dwóch przyciskach i jeden w jednym. Dobrze wiem, że ten quiz jest testem jednokrotnego wyboru, więc nie trudno wydedukować, że w ten sposób oznaczane są prawidłowe odpowiedzi. Poniżej kod znajduje się kod, który potwierdza moją teorię.

Kod tłumaczymy następująco. Dodaj wartość parametru data-score do hash’a w adresie url strony. Jeżeli będzie to jeden to nasz wynik się zwiększy o jeden, jeżeli zero to analogicznie. Dalej to już bajer typu zmień kolor tła przycisku w zależności, czy to jest prawidłowa odpowiedź, czy nie i przeładowanie strony.

Z powyższą wiedzą mogę zdobyć maksymalną ilość punktów na każdym z quizów z tej strony.

PS Błagam nie róbcie tak jak oni.