Przejdź do treści

Kategoria: php

27 artykułów oznaczonych „php".

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 →

Jak liczyć pieniądze w kodzie – żeby grosze się zgadzały

bazy danychPythonphp

0,1 + 0,2 to nie 0,3 – a to znaczy, że typu float nie wolno używać do pieniędzy. Nie chodzi o ostrożniejsze zaokrąglanie, tylko o inny typ danych. Przegląd tego, jak liczy się kwoty poprawnie: grosze jako liczby całkowite, DECIMAL w bazie, decimal w Pythonie, BigDecimal w Javie, BCMath w PHP i BigInt w JavaScripcie. Do tego zaokrąglenie bankierskie i słynny spór o VAT liczony od pozycji czy od sumy.

Czytaj dalej →

Jak sortuje twój język: TimSort, Powersort, pdqsort i reszta

algorytmyPythonJavaScript

Ostatnia część cyklu o sortowaniu: co naprawdę dzieje się po wywołaniu sorted() w Pythonie, Arrays.sort w Javie, std::sort w C++, sort() w PHP i JavaScripcie oraz sort_unstable w Ruście. Powersort od CPythona 3.11, dual-pivot quicksort dla typów prostych, stabilność wymuszona specyfikacją, sortowanie zewnętrzne, quickselect zamiast sortowania i klasyczne pułapki: sortowanie liczb jak napisów oraz niespójny komparator.

Czytaj dalej →

Cyfry kontrolne – jak PESEL, NIP, IBAN i numer karty łapią literówki

matematykaJavaScriptPython

Ostatnia cyfra PESEL-u, NIP-u, numeru karty płatniczej i dwie cyfry w IBAN-ie nie są losowe – to sumy kontrolne oparte na arytmetyce modularnej. Jakie błędy człowiek robi najczęściej, dlaczego wagi i moduł pierwszy łapią przestawione cyfry, algorytm Luhna w 15 linijkach oraz implementacje walidacji PESEL, NIP i IBAN w Pythonie, PHP i JavaScript.

Czytaj dalej →

Zamiana Liczb: Od Dziesiętnego do Binarnego

phpJavaScriptPython

Zamiana liczb dziesiętnych na binarne – z częścią całkowitą i (rzadko porządnie tłumaczoną) częścią ułamkową. Algorytm mnożenia przez 2, kiedy ułamek jest skończony, a kiedy nieskończony, wykrywanie okresu oraz implementacje w Pythonie, JavaScript, PHP i C++. Plus most do niedokładności liczb zmiennoprzecinkowych.

Czytaj dalej →

← Wszystkie wpisy