Rzecz dotyczy udostępnionego przeze mnie już jakiś czas temu wyzwania. Do tej pory wszystkie rozwiązania były zgodne z moim założeniem. Za pomocą blind SQLi rozpoznawana była struktura bazy danych, z odpowiedniej kolumny pobierany był hash hasła dla konkretnego użytkownika, hash ten był następnie w odpowiedni sposób wykorzystywany. Właśnie to odpowiednie wykorzystanie pobranego z bazy hasha było, w moim zamierzeniu, głównym elementem wyzwania. Wszystko po to, by pokazać, że nie wystarczy hashować hasła, trzeba jeszcze robić to z głową.
Dziś otrzymałem rozwiązanie, które wykracza poza ten schemat. Warto mu się przyjrzeć, bo jest nie tylko ciekawe, ale i w pewnym stopniu... przypadkowe.
Irytują mnie różne rzeczy. Między innymi występujący od czasu do czasu błąd 0x80072efd. Tym razem Microsoft Security Essentials nie jest w stanie pobrać aktualizacji z powodu tego właśnie błędu, ale czasami również Windows Update nie jest w stanie pobrać aktualizacji. Cóż, trzeba się przyjrzeć co właściwie się dzieje... Szybki rzut okiem na to, co się dzieje na kablu (Wireshark) i już wszystko jasne. Przepełnił mi się /var na obszczymurku, przez co squid się złożył (brak miejsca na logi), komputer nie może nawiązać połączenia z proxy, stąd błąd 0x80072efd. Głupie jest natomiast to, że nie korzysta z drugiej w kolejności opcji (konfiguracja proxy przez WPAD), czyli nie wykorzystuje połączeń bezpośrednich. Ech...
Oryginał tego wpisu dostępny jest pod adresem 0x80072efd
Nie mam zamiaru pisać “listów otwartych” w sprawie zmian w edukacji, ale na jedną krótką refleksję sobie pozwolę. Może pora wrócić do nauczania retoryki? Nie, nie chodzi o “sztukę pięknego przemawiania” czy “sztukę przekonywania do własnych racji”, ale o elementarną teorię i praktykę komunikacji ustnej. Wszystko po to, by umieć ze sobą rozmawiać, potrafić formułować swoje myśli i argumenty i w sposób jasny przekazywać je swoim rozmówcom. To, co słyszę “w przestrzeni publicznej” przeraża mnie. Wypowiedzi są chaotyczne, zagmatwane, wewnętrznie niespójne. Argumentacja, z którą niejednokrotnie się spotykam (której jestem celem), wręcz obraża moją inteligencję...
Pojawiła się nowa wersja Serendipity, czyli engine, z którego korzysta mój blog. Po przeczytaniu listy zmian doszedłem jednak do wniosku, że na razie nie będę wykonywał aktualizacji. Żadna ze zmian nie jest na tyle istotna, by w moim przypadku uzasadniała pracę włożoną w aktualizację oprogramowania. Przy okazji warto odnotować potencjalny problem, który może wystąpić przy aktualizacji oprogramowania w przypadku wykorzystania bazy SQLilte: Serendipity 1.5.1 with SQLite.
Jest taka akcja pod nazwą Odstaw Internet Explorera 6 do lamusa! Rzeczywiście, najwyższa ku temu pora. Pamiętam jeszcze wersje tej przeglądarki oznaczone numerami 4, 5, 5.5. Piszę pamiętam , przy czym właściwie powinienem napisać używałem. Mógłbym też wspomnieć o wersjach starszych niż 4, bo na oczy je widziałem, ale na szczęście do używania ich zmuszony nie byłem. Od dawna moją podstawową przeglądarką jest Firefox (zacząłem z niej korzystać, gdy nosiła jeszcze nazwę Phoenix), choć nadal intensywnie wykorzystuje IE do testów (ach te strony, które wyglądają/działają jedynie w jednej przeglądarce), IE 6 odstawiłem jednak do lamusa już dawno, dawno temu... Nie tylko ja, na poniższym wykresie przedstawiona jest liczba wizyt na moim blogu, podczas których wykorzystany został IE 6. Wykres dotyczy okresu od 1 stycznia 2009 roku.
Cieszy to, że liczba osób korzystających z IE 6 zmniejsza się. Szkoda tylko, że jeszcze nie spadła do zera. A piszę o tym wszystkim w nawiązaniu do wpisu Michała. Ja co prawda do akcji czynnie się nie przyłączę, przynajmniej na razie, ale udzielam jej moralnego poparcia :)
Nawiązując do poprzedniego wpisu, chciałem się Was spytać z jakimi “potworkami” spotkaliście się? Ja mam kilka swoich faworytów:
potwornie brzydkie strony (layout, grafika, dobór kolorów, dobór czcionek i rozmiar tekstu, ...),
potwornie “piękne” strony (typowy przerost formy nad treścią, wolne grzejące procesor i wieszające przeglądarkę),
komunikaty o błędach walidacji typu “niepoprawne dane” bez podania informacji JAKIE dane są niepoprawne,
czyszczenie/usuwanie wcześniej podanych danych w przypadku błędu walidacji,
Wiadomo, że o gustach się nie dyskutuje. Nie rozumiem jednak przypadków, gdy całkiem dobrze działająca aplikacja jest przepisywana na nową technologię, która jest bardziej “trendy”. Taki przypadek to skrajny przykład przerostu formy nad treścią, częściej zdarzają się jednak przykłady pomniejsze, jak nadużywanie AJAX czy jQuery.
Przy testowaniu aplikacji nie lubię wszelkiego rodzaju “wniosków”. Ilość parametrów w nich jest spora, operacje często składają się z wielu kroków, co skutecznie eliminuje użycie większości narzędzi automatycznych, są walidowane biznesowo (ponowne sito na narzędzia automatyczne), a ewentualne znaleziska to zwykle co najwyżej spora gromada XSS, których scenariusz wykorzystania praktycznie “nie występuje w naturze”. Z tego powodu jestem niezbyt wyrozumiały dla błędów walidacji wymienionych powyżej. Szczerze mówiąc gdybym był klientem i spotkał się z takim traktowaniem, to poważnie zastanowiłbym się, czy rzeczywiście chcę skorzystać z usług tego podmiotu...
A jakie są Wasze ulubione “potworki”?
Oryginał tego wpisu dostępny jest pod adresem Potworki
Taka krótka refleksja na temat usability. Wyjątkowo irytuje mnie sytuacja, gdy muszę podawać dane typu PESEL a później data urodzenia. Tak się składa, że data urodzenia jest zakodowana w numerze PESEL, więc wprowadzając najpierw swój numer PESEL już podaję datę urodzenia. Informacja zakodowana w numerze PESEL może i powinna być wykorzystana co najmniej do automatycznego wypełnienia daty urodzenia.
Oczywiście mówię tu o sytuacji, w której te dane muszę podać w trakcie testów jakiejś aplikacji. Nie podaję swoich danych (swojego numeru PESEL zresztą nie pamiętam), tylko wartości wygenerowane narzędziami typu generator numerów PESEL i wyjątkowo irytuje mnie późniejsze wpisywanie daty urodzenia i poprawianie płci. Zgoda, pewną wartością dodaną może być weryfikacja numeru PESEL na zasadzie sprawdzenia go z datą urodzenia oraz płcią (płeć jest również zakodowana w numerze PESEL), które użytkownik deklaruje przy wypełnianiu formularza, ale akurat w tym wypadku mówię o wygodzie użytkowania , a z tym bywa różnie. Może o spotkanych “potworkach” napiszę kiedy indziej :)
W drugim wyzwaniu na bootcamp została wykorzystana serializacja danych do przechowywania stanu sesji (patrz pierwsza część wyjaśnienia do zadania). Przykłady, które prezentuje mają przedstawiać typowe problemy z bezpieczeństwem aplikacji internetowych, a nie z konkretnym środowiskiem/językiem programowania, ten przykład jest praktyczną demonstracją problemu określanego jako CWE-642: External Control of Critical State Data, o czym już kilka razy wspominałem. Warto jednak zatrzymać się na chwilę przy funkcjach serialize/unserialize w PHP.
Poseł zwrócił się także z pytaniem o możliwość, w przypadku braku technicznych możliwości wykrywania sprawców przestępstw pedofilskich popełnionych za pomocą sieci TOR oraz z uwagi na szczególne dobro jakie zamierza się chronić (dobro dzieci), dokonania penalizacji używania oprogramowania umożliwiającego korzystanie z sieci TOR. (...)
Jakieś dodatkowe pomysły co by tu można jeszcze poddać penalizacji? Oczywiście z uwagi na szczególne dobro jakie zamierza się chronić? Przykłady innych przypadków szczególnego dobra również mile widziane.