Paweł Goleń, blog

Jakieś 10-12 lat temu znacząco zmniejszyłem “konsumpcję” tradycyjnych nośników słowa pisanego (książki, gazety, czasopisma) na rzecz tego, co można było znaleźć w Internecie. Po prostu w sieci było więcej, bardziej konkretnych i aktualnych informacji. Oczywiście już wówczas pojawiał się problem z ich wiarygodnością, choć “bariera wejścia” dość skutecznie odsiewała kompletne bzdury.

Niestety, wszystko co dobre, szybko się kończy. W rezultacie ponownie udział wspomnianych tradycyjnych nośników w tym, co czytam, jest coraz większy. Dzięki temu coraz rzadziej mogę oglądać główne strony “najważniejszych portali”, które nadzorują specjaliści od wciskania tej samej informacji wiele razy, bo przecież liczy się klik i wyświetlenie reklamy.

Trzeba pogodzić się z tym, że chodzi o pieniądze. Często nie warto (w sensie – zysk nie uzasadnia poniesionych kosztów) tworzyć serwisów na wysokim merytorycznie poziomie, jeśli korzystać będzie z tego 0.1%25 społeczeństwa. W efekcie to, co jest oferowane, odpowiada temu, na co jest zapotrzebowanie. Na wyjściu jest “informacyjna” papka oparta na sensacji, plotce i cudzym niepowodzeniu (przecież nic tak nie dowartościowuje frustrata).

Można biadolić nad tym, że wszystko “schodzi na pudelka”. Można próbować apelować o “utrzymanie poziomu”, choć akurat ja nie widzę tutaj szans powodzenia. Co więcej nie widzę uzasadnienia, dlaczego miałbym komuś mówić jak ma prowadzić jego własny biznes. Za jego własne pieniądze. Mogę po prostu nie korzystać z jego usług, lub stworzyć coś alternatywnego, jeśli uważam, że zrobię to lepiej (i mam na to środki).

Coraz bardziej utwierdzam się w przekonaniu, że byłbym gotowy zapłacić za usługę, która polegałaby na otrzymywaniu w pewnym stopniu merytorycznie zweryfikowanych aktualności z wybranych przeze mnie dziedzin. Taki agregator treści z sitem na wejściu i oceną wartościowości poszczególnych informacji (nie, crowdsourcing nie działa, daje dyktaturę przeciętności). A i za samą treść też byłbym w stanie zapłacić.

Oryginał tego wpisu dostępny jest pod adresem Pudelek postępujący

Autor: Paweł Goleń

Jeśli ktoś ma trochę wolnego czasu i zastanawia się jak go wykorzystać, polecam zapoznanie się z Cryptographic Storage Cheat Sheet i przy okazji z podcastem związanym z tym właśnie tematem. A sprawa jest istotna, wystarczy przypomnieć OWASP Top10 2010: A7 – Insecure Cryptographic Storage oraz CWE-311: Missing Encryption of Sensitive Data i CWE-327: Use of a Broken or Risky Cryptographic Algorithm. By całość była bardziej na czasie, zwracam uwagę na punkt Rule – Store the hashed and salted value of passwords.

Oryginał tego wpisu dostępny jest pod adresem Cryptographic Storage – jak to robić poprawnie

Autor: Paweł Goleń

Pora na kolejny eksperyment. Tym razem jest on związany z bankowością internetową i tematem autoryzacji transakcji. Eksperyment jest podwójny ponieważ symuluję w nim dwie metody autoryzacji transakcji. Pierwsza jego część związana jest z autoryzacją transakcji przy użyciu kodów jednorazowych dostarczanych poprzez SMS. W drugiej części w ograniczonym stopniu symuluję autoryzację transakcji przy użyciu tokena challenge/response. Zadanie polega na wykonaniu przelewu tak, jak w normalnym banku, który korzysta z tych metod autoryzacji transakcji. Po prostu zrób kilka przelewów i nie daj się okraść.

Czytaj dalej...

Mój niedawny eksperyment dotyczył pojemności pamięci krótkotrwałej. Pojemność tej pamięci jest znana i wynosi 7 elementów +/– 2. Chciałem zweryfikować, czy informacje, które można wyczytać w mądrych książkach, są zgodne z rzeczywistością. Ten sam eksperyment przeprowadzony 20 lat temu i dziś wcale nie musi dać takich samych rezultatów. Są badania, z których wynika, że wśród obecnych 11-12 latków pewne zdolności kognitywne rozwijają się o 2-3 lata później, niż miało to miejsce 15 lat temu (Children are less able than they used to be). Co prawda oczekiwano zmiany, ale raczej w drugim kierunku. Inny przykład: Psychologia biznesu: Jak reklamy wabią dzieci? (20.02) i fragmenty o “wymiataniu neuronów”. Przez otaczającą nas rzeczywistość nasze mózgi kształtują się inaczej, niż kiedyś. No i w zasadzie po co nam pamięć krótkotrwała, skoro mamy cut, copy and paste?

Czytaj dalej...

Kolejne wskazówki/zadanie związane z bootcamp XXV. W tej części wskazówek udostępniony jest plik z zapisem sesji HTTP. Zadanie polega na przeanalizowaniu odpowiedzi serwera na poszczególne zapytania i identyfikacji na tej podstawie miejsc, w których należy się spodziewać sql injection. Więcej informacji: Wyzwanie V – wskazówki, część druga.

Oryginał tego wpisu dostępny jest pod adresem Bootcamp XXV – hint II

Autor: Paweł Goleń

Truizmem jest stwierdzenie, że człowiek jest najsłabszym ogniwem (bezpieczeństwa). Wydaje mi się, że za mało czasu poświęca się temu, by odpowiedzieć na pytanie dlaczego tak właśnie jest. Człowiek jest (tylko) człowiekiem, jest przez to “ograniczony”. Ograniczony przez tysiące lat ewolucji, które w pewien sposób nas ukształtowały. Uważam, że z czasów, gdy nasi przodkowie musieli walczyć o przetrwanie, pożywienie i sukces reprodukcyjny, zostało w naszym zachowaniu dużo więcej, niż chcemy się do tego przyznać. Są też inne, prostsze(?), zagadnienia z psychologii, które mogą przydać się przy projektowaniu mechanizmów bezpieczeństwa. Używalnych mechanizmów bezpieczeństwa, cokolwiek to znaczy.

Czytaj dalej...

Ciekawa lektura: Anonymous speaks: the inside story of the HBGary hack. Warto przeczytać i zobaczyć jak wiele “małych” błędów prowadzi do całkiem sporej wtopy. A błędy były proste i typowe:

W tej chwili zamiast się dowartościowywać wymyślając przemyślne epitety mające oddać brak profesjonalizmu ofiar ataku, lepiej zastanowić się, czy my sami się przed takim scenariuszem dobrze bronimy. To jak z tym jest?

Dla przypomnienia inna historia: Uczmy się na błędach: apache.org incident report. Znajdź części wspólne na tych obrazkach :)

UPDATE : W tym samym temacie HBGary hack: lessons learned.

Oryginał tego wpisu dostępny jest pod adresem Uczmy się na CUDZYCH błędach: HBGary hack

Autor: Paweł Goleń

Jeśli ktoś z czytelników ma trochę czasu do zmarnowania(?), to może niech go marnuje produktywnie. No, produktywnie przynajmniej dla mnie :) Chcę przeprowadzić pewien eksperyment, Wasz udział bardzo mi w tym pomoże.

O co chodzi? Przygotowałem prostą aplikację, która wyświetla przez kilka sekund kilka cyfr. Następnie te cyfry znikają, natomiast pojawia się pole do ich wpisania. Zadanie jest proste – spróbować przepisać wyświetlone wcześniej cyfry, lub przynajmniej tyle, ile udało się zapamiętać. Ilość wyświetlanych cyfr waha się od 3 do 10, czas ich wyświetlania zależy natomiast od ich ilości (sekunda na każdą cyfrę).

Przykład ten znajduje się pod adresem http://bootcamp.threats.pl/e/test01.php (wymaga włączonej obsługi JavaScript) i nie jest elementem mojego przewodnika po bezpieczeństwie aplikacji internetowych, więc proszę go nie hakować. Przykłady z przewodnika hakować oczywiście można :)

Oryginał tego wpisu dostępny jest pod adresem Prośba o pomoc: zmarnuj trochę czasu

Autor: Paweł Goleń

W trakcie porannej prasówki we wpisie Tomka (Autorization Manager – bestia i jak ją obejść) trafiłem na link do tego wpisu: Szkolenia programistyczne, czyli maszyna ssąco-uciszająca . Miażdżąca ocena szkoleń. Najgorsze jest to, że prawdziwa.

Znam Tomka i mogę praktycznie w ciemno założyć, że jego szkolenie było konkretne (treść) i ciekawe (forma przedstawienia, sposób mówienia, osobowość mówcy). Podobne odczucia mam w odniesieniu do kilku innych osób, co do których wiem, że łączą sporą wiedzę z umiejętnością ciekawego opowiadania. Znam też osoby, których wiedzę naprawdę podziwiam, ale na prezentacji/szkoleniu w ich wykonaniu wytrzymam góra 5 minut, potem zasnę, albo mnie trafi... I niestety też miałem wątpliwą przyjemność uczestniczenia w szkoleniach/prezentacjach, których treść i forma nie nadaje się nawet do /dev/null.

Oryginał tego wpisu dostępny jest pod adresem Złe szkolenia są ZŁE!

Autor: Paweł Goleń

Otrzymałem ostatnio zapytanie odnośnie przechowywania danych sesji po stronie klienta. Było ono związane z drugim z przygotowanych przeze mnie wyzwań. Jednym z istotnych elementów tego zadania była analiza danych przechowywanych po stronie klienta, co wyjaśniam w opisie implementacji sesyjności w przykładowej aplikacji. Pytanie – czy dane sesji można bezpiecznie przechowywać po stronie klienta?

Czytaj dalej...