Archiwum kategorii ‘limity’

Nadpisywanie wbudowanych protokołów PHP własnym wrapperem strumienia

piątek, 15 Kwiecień 2011

Po ostatnich, dosyć wyczerpujących artykułach na temat silnego typowania danych, oraz autentykacji NTLM poprzez atak man-in-the-middle, postanowiłem przedstawić coś znacznie lżejszego.

Nieraz podczas pisania aplikacji natrafiałem na zabezpieczenia w stylu „system plików jest w trybie: tylko do odczytu, PHP ma prawa zapisu wyłącznie w bazie danych”. Jest to oczywiście skrajny przypadek zabezpieczeń przed hackerami, jednak w moim przypadku zdarzający się dosyć nagminnie. W tak zabezpieczonym środowisku pojawiają się więc dosyć nietypowe problemy z funkcjami wbudowanymi w PHP, gdyż niektóre z nich wymagają praw zapisu do katalogów na dysku lokalnym (upload plików, cache WSDL, biblioteka cURL), lub odczytu z plików (np. SoapClient nie potrafi odczytać treści WSDL bezpośrednio ze zmiennej, lecz tylko poprzez protokół HTTP lub z pliku lokalnego).

Opiszę więc krótko mało znane i dosyć egzotyczne obejście tych problemów: nadpisywanie wbudowanych w PHP protokołów własnymi. (więcej…)

Silne typowanie danych w PHP, część II: autoboxing oraz niezniszczalne obiekty

wtorek, 12 Kwiecień 2011

We wcześniejszym artykule dotyczącym silnego typowania opisałem mechanizm typehintów, który wymusza zgodność typów danych (także nie będących obiektami) przekazywanych do metod i funkcji. Niestety wspomniana implementacja nie zabezpiecza przed innym problemem związanym z dynamicznym typowaniem zmiennych: brakiem kontroli typu podczas nadpisywania wartości zmiennych.

W celu zapewnienia kontroli typu, postanowiłem wprowadzić do języka PHP pojęcie autoboxingu znanego z języków C#, oraz Java. (więcej…)

Jak obejść limit przestrzeni dyskowej na koncie WWW

czwartek, 24 Marzec 2011

Przy wyborze serwera hostingowego pod nową stronę WWW jednym z głównych czynników decydujących „za” lub „przeciw” jest limit dostępnej przestrzeni dyskowej.

Chociaż w dzisiejszych czasach większość firm na rynku prześciga się między sobą w ilości oferowanych gigabajtów (tak dostępnego transferu, jak i powierzchni), zademonstruję, jak te limity obejść całkowicie (lecz krótkoterminowo). (więcej…)

Silne typowanie danych w PHP, część I

środa, 23 Marzec 2011

Logo PHPW wielu dyskusjach porównawczych pomiędzy programistami różnych języków programowania często pojawia się zarzut w stylu „a u was w PHP nie ma silnego typowania danych!”.

Czy aby na pewno?

Okazuje się jednak, że w PHP można zaimplementować mechanizm silnego typowania danych znany z takich języków jak C, C++, C#, Java… (więcej…)

Oszukać przeznaczenie, czyli łamanie SAFE_MODE oraz max_execution_time

środa, 23 Marzec 2011

Większość programistów PHP choć raz w swoim życiu spotkało się z takimi terminami jak SAFE_MODE oraz limitem czasowym wykonywania programu w PHP (domyślnie 30 sekund).

O ile obie te rzeczy można łatwo wyłączyć, gdy pracuje się na serwerze dedykowanym lub w środowisku wewnętrznym firmy, to na hostingach współdzielonych obie te rzeczy potrafią przyprawić o ból głowy, wyłączając skrypt (np. migrujący dużą ilość danych) w trakcie jego wykonywania.

W tym artykule przedstawię prostą metodę na obejście tego zabezpieczenia. (więcej…)

Limitowanie prędkości przesyłu plików w PHP

wtorek, 22 Marzec 2011

MiniaturkaPracując w sektorze hostingowym często spotykam się z potrzebą kontroli użycia łącza ze światem. Jako że łącza nie są z gumy i mają swoje fizyczne/ekonomiczne ograniczenia, w przeszłości niejednokrotnie musiałem przycinać maksymalne pasmo użytkownikom przy pomocy gotowych modułów do Apacha, lub niskopoziomowych mechanizmów wbudowanych w system operacyjny.

Co jednak jeśli użytkownik sam sobie chce zmniejszyć lub zwiększyć szerokość pasma do celów np działu download na swojej stronie?

Na shared hostingu nie jest w stanie tego osiągnąć, gdyż nie istnieją takie serwery, gdzie można sobie taki parametr regulować. Z tego też powodu postanowiłem napisać kod PHP symulujący tą funkcjonalność (więcej…)