Przejdź do treści

Kategoria: bezpieczeństwo

22 artykułów oznaczonych „bezpieczeństwo".

Dlaczego, wychowany na PHP, piszę dziś głównie w Pythonie

phpPythonbezpieczeństwo

Trzecia część cyklu Wychowany na PHP, tym razem osobiście. Z Perla przesiadłem się na PHP 4, przeprowadziłem na nie swoje i cudze projekty, przeszedłem przez piątkę i zatrzymałem się na siódemce. Dziś nowe projekty zaczynam zwykle w Pythonie – nie dlatego, że PHP jest zły, tylko dlatego, że wzorzec MVC poznany w Laravelu i Symfony znalazłem we Flasku i Django, a razem z nim wersje przypięte w repozytorium, migracje, panel admina i jeden język do backendu i skryptów. Plus jeden przypadek, w którym nadal sięgam po PHP: jeden plik index.php i SQLite na najtańszym hostingu.

Czytaj dalej →

Gdzie siedzi interpreter – model wdrożenia a bezpieczeństwo aplikacji

phpPythonbezpieczeństwo

PHP2Shell zaatakował, zanim aplikacja zdążyła się odezwać – więc jakość jej kodu nie miała znaczenia. To dobry pretekst, żeby zapytać o coś, o czym na tanim hostingu nikt nie myśli: co stoi między internetem a moim kodem, kto wybiera wersję interpretera i co staje się punktem wejścia. Cztery modele wdrożenia, od mod_php po statyczną stronę, porównane pod kątem tego, co atakujący dostaje za darmo. Bez tezy, że PHP jest zły – bo PHP podany porządnie wygląda dziś prawie tak samo jak Python.

Czytaj dalej →

PHP2Shell – jedna luka w PHP i państwa gaszą swoje strony

phpbezpieczeństwo

20 października 2026 wyciekły szczegóły dwóch krytycznych luk w samym silniku PHP (CVE-2026-109618 i CVE-2026-109619, razem nazywanych PHP2Shell): zdalne wykonanie kodu bez logowania, zanim aplikacja zdąży się w ogóle uruchomić. W Polsce COI wyłączył strony BIP w systemie SSDIP, za granicą gasły serwisy rządowe w Holandii, Finlandii i Francji. Co dokładnie się zepsuło, ile serwerów było wystawionych, co wiemy o włamaniach – i dlaczego najgorsza liczba w tej historii to nie CVSS, tylko 69 procent.

Czytaj dalej →

SQL Injection dziś – dlaczego trzeba się naprawdę postarać, żeby być podatnym

phpbezpieczeństwoMySQL

Trzy lata temu pokazałem na blogu klasyczny SQL Injection: formularz logowania w PHP, sklejane zapytanie i wpisane w pole username „' OR 1=1#. Wróćmy do tamtego kodu i zadajmy inne pytanie: czy dziś dałoby się go tak w ogóle napisać? Bo domyślna ścieżka współczesnego PHP i frameworków – obsługa formularza, ORM, zapytania parametryzowane z pudełka – prowadzi do kodu bezpiecznego, a żeby wstrzyknąć SQL, trzeba dziś z tej ścieżki świadomie zejść. Z uczciwym rozdziałem o tym, gdzie wstrzyknięcie wciąż jest łatwe.

Czytaj dalej →

Czy sztuczna inteligencja wyprowadzi nas z legacy? Historia COBOL-u i pewnego mema

bezpieczeństwomigracja

Widziałem rolkę: programiści COBOL-a na bruku, bo AI ich zastąpiło. Postanowiłem sprawdzić, ile w tym prawdy – i okazało się, że mem sklejono z trzech prawdziwych rzeczy w jedno wydarzenie, które się nie zdarzyło. Przy okazji: dlaczego 65-letni język wciąż liczy pieniądze świata, co naprawdę potrafią modele językowe przy starym kodzie, a gdzie obietnica wyprzedza fakty.

Czytaj dalej →

Shellshock: jak działający od 22 lat kod z dnia na dzień stał się dziurą

bezpieczeństwoLinux

We wrześniu 2014 okazało się, że bash – powłoka obecna niemal na każdym serwerze uniksowym – ma błąd pozwalający na zdalne wykonanie kodu. Nie w nowej funkcji, tylko w mechanizmie działającym niezmiennie od 1992 roku, uruchamianym przez wysłużone skrypty CGI. Anatomia podatności, która pokazała, że stare i sprawdzone znaczy bezpieczne tylko do momentu, w którym ktoś każe temu zrobić coś nowego.

Czytaj dalej →

Tablice mieszające: co naprawdę siedzi w słowniku i tablicy asocjacyjnej

algorytmyPythonbezpieczeństwo

Pierwsza część serii o strukturach danych. Jak z funkcji skrótu robi się dostęp w czasie stałym, co się dzieje przy kolizjach, czym różni się łańcuchowanie od adresowania otwartego i dlaczego słownik czasem nagle zwalnia. Kontrakt hash i eq w Pythonie, klucz, który gubi dane, koszt amortyzowany przy rozrastaniu tablicy oraz trzy różne rzeczy nazywane tym samym słowem hash: skrót do wyszukiwania, kryptograficzny i do haseł.

Czytaj dalej →

Kiedy złożoność staje się podatnością: HashDoS, ReDoS i inne ataki na algorytmy

bezpieczeństwoalgorytmyPython

Tabelki złożoności czyta też atakujący. Jak kilka kilobajtów dobranego wejścia zajmuje rdzeń procesora na sekundy: kolizje w tablicach mieszających (HashDoS z 2011 roku), katastrofalny nawrót w wyrażeniach regularnych (27 minut awarii Cloudflare w 2019), pesymistyczny przypadek quicksorta, bomby dekompresyjne i encje XML. Z pomiarami w Pythonie, prawdziwymi liczbami i listą obron, które faktycznie działają.

Czytaj dalej →

← Wszystkie wpisy