Archiwa tagu: php

Jaki framework do PHP?

Jakiego frameworka użyć? To pytanie często pada na początkowym etapie projektu. Przyjrzyjmy się rozwiązaniom dla języka PHP.

Od jakiegoś czasu najpopularniejszym frameworkiem dla PHP jest Laravel. Widać to np. na porównaniu SitePoint:

Inny sposób sprawdzenia popularności danej technologii to np. sprawdzenie ilości pytań na StackOverflow 😉 Wiadomo, nie jest to miarodajne porównanie, ale daje jakiś ogląd sytuacji.

  • Laravel – 49.306
  • CodeIgniter – 49.135
  • Symfony – 43.769
  • CakePHP – 27.412
  • Yii – 15.315
  • Kohana – 2.177

Są to jednak dość rozbudowane narzędzia. Alternatywą są te dwa frameworki. Ich autorzy zapewniają, że zależy im na zachowaniu prostoty użycia. Mogą być więc dobrym wyborem na początek przygody z używaniem frameworków w PHP:

[PHP] Bezpieczne logowanie błędów

Pozostając w temacie tworzenia bezpiecznych aplikacji webowych, pora przedstawić dobre zwyczaje odnośnie logowania błędów w aplikacjach PHP.

  • Podczas pracy programistycznej, najlepiej ustawić najwyższy poziom logowania błędów: zmienna error_reporting powinna otrzymać flagę E_ALL | E_STRICT (gdzie znak | oznacza po prostu OR). Więcej flag: http://php.net/manual/en/errorfunc.constants.php. Takie ustawienia pozwolą na wyłapanie nawet drobnych błędów na samym początku produkcji.
  • Podczas wdrożenia aplikacji oczywiście logi powinny zostać wyłączone (lub raczej – przekierowane w całości do pliku z logami. Poziom można wtedy zredukować). Dokonuje się tego za pomocą flag log_errors, error_log, display_errors. Można również użyć własnego przechwytywania błędów (set_error_handler).

Dane w bezpiecznych aplikacjach – pisanie i testowanie

Proponowana w mej ostatniej lekturze strategia tworzenia bezpiecznych aplikacji opiera się głównie na podziale danych przetwarzanych przez aplikację na dane bezpieczne i niebezpieczne.

Dane bezpieczne to te, które generujemy we wnętrzu aplikacji (np. sklejanie stringa, obliczenia, generowanie daty itp.). Uwaga jednak na zewnętrzne biblioteki – „w trybie paranoika” również danych pochodzących z bibliotek  nie powinno traktować się jako w 100% zaufane.
Dane niebezpieczne to wszystkie dane pochodzące ze źródeł zewnętrznych: adresy URL (dane, które nadeszły wraz z żądaniem GET), dane w żądaniach typu POST, nagłówki HTTP (cookie), dane z bazy danych, pliki itp.

Opierając się na powyższym podziale, bezpieczeństwo aplikacji można zapewnić poprzez:

  • Skuteczną walidację danych niebezpiecznych. Autor zaleca, by walidacji dokonywać za pomocą funkcji wbudowanych w język (np. is_number) – minimalizujemy wtedy ryzyko popełnienia błędu we własnych funkcjach. Wyrażeń regularnych używamy w ostateczności.
  • Nie opieranie się na interfejsie. To, że w interfejsie aplikacji użyliśmy checkboxa z kilkoma dozwolonymi wartościami nie oznacza, że użytkownik nie spreparuje żądania, przesyłając dane, których się nie spodziewamy.

Czytaj dalej

Lektura: „PHP – Bezpieczne programowanie”

Przerabiam ostatnio bardzo zaległą lekturę, czyli PHP – Bezpieczne programowanie, autorstwa Chrisa Shifletta  (tu podziękowania dla kolegi, od którego w zamierzchłych czasach ową książkę otrzymałam). Kiedy poznałam inne języki, stwierdziłam, że nie pałam miłością do PHP – w końcu odstawiłam zabawy z WWW na półkę, do zabaw z programowaniem świetnie nadaje się Ruby, a do pisania konkretnych aplikacji – C# i Java. Książka więc również przeleżała nieco czasu na półce. Stwierdziłam jednak, że może być… niezłą lekturą dla testera. PHP to tylko przykładowy język, a przedstawione tu zasady zabezpieczania aplikacji webowych są dość uniwersalne. Czyta się bardzo przyjemnie, listingi kodu są szczupłe i dobrze wyjaśniają, o co chodzi.

 

PHP Bezpieczne programowanie - książka

PHP Bezpieczne programowanie – link do księgarni Helion.

Instalacja cUrl na serwerze Krasnal

Krasnal – przyjazny użytkownikowi serwer oparty na Apache, zawierający PHP i bazę danych, dla systemu Windows;

cUrl – biblioteka obsługi protokołów m.in. HTTP, dostępna dla PHP i innych języków;

Jak połączyć te dwie rzeczy?

  1. Co najważniejsze – cUrl już na Krasnalu jest, nic nie trzeba dodatkowo ściągać, wystarczy go tylko uaktywnić.
  2. W pliku php.ini odkomentować: extension=php_curl.dll
  3. Skopiować z katalogu php (np. serwerekphpdlls) pliki: – libeay32.dllssleay32.dll do katalogu X:/windows/system32
  4. Zresetować serwer.
  5. Gotowe.