About IT by Karol Nawrot

Tag: PHP

Codeigniter i usuwanie styli przy zapisywaniu

napisany przez w dniu 04 wrz 2011, w kategorii PHP, Rozwiązania

Od kilku miesięcy piszę dosyć duży system w PHP. Jako framework wybrałem CodeIgniter. Nie jest on jakoś strasznie rozbudowany, ale w dużym stopniu ułatwia rozwój systemu. Ostatnio natrafiłem na problem, z którym męczyłem się dwa dni. Na jednej ze stron ma osadzony edytor TinyMCE. Przy zapisywaniu jego zawartości do bazy danych w magiczny sposób znikały mi style. Wyglądało to tak, że np. taki kod:

<span style=”color:#FF0000″>Lorem Ipsum</span>

był zapisywany w takiej postaci:

<span>Lorem Ipsum</span>

Przez długi czas obwiniałem za to samego TinyMCE. Szukałem rozwiązania np. w ustawieniu valid elements. “Winnym” okazał się jednak sam framework. A dokładnie jego mechanizm zabezpieczenia przed atakami XSS. Polega on mniej-więcej na tym, że CodeIgniter filtruje żądania POST na wypadek niepożądanego kodu.

Najprostszym rozwiązaniem byłoby  ustawienie zmiennej global_xss_filtering w pliku application/config/config.php na FALSE.

$config['global_xss_filtering'] = FALSE;

Ale oczywiście wyłączenie mechanizmu bezpieczeństwa nie jest dobrym pomysłem.

Lepszym rozwiązaniem jest modyfikacja funkcji _remove_evil_attributes w pliku system/core/security.php. Załóżmy, że problem dotyczy stron, jakie znajdują się w folderze Admin. Zmodyfikuj okolicę linii 579 wspomnianego pliku np. tak:

 if (strpos(strtoupper($_SERVER['REQUEST_URI']),ADMIN)==TRUE)
{$evil_attributes = array('on\w*', 'xmlns');}
else{$evil_attributes = array('on\w*', 'style', 'xmlns');}

Spowoduje to, ze jeśli wywoływany jest plik, który w ścieżce ma słowo Admin, to mechanizm filtrowania pozwoli na przesyłanie styli w żądaniach POST.

Nie jest to piękne rozwiązanie, ale najważniejsze, że działa.

2 komentarzy : więcej...

Kompresowanie plików JavaScript

napisany przez w dniu 25 lut 2011, w kategorii JavaScript, Narzędzia, Rozwiązania

W moich serwisach coraz więcej używam JavaScript’u. Niestety ich rozmiary stają się coraz większe, przez co strony są coraz bardziej ciężkie. Parę osób pewnie zapyta, jakie to ma znaczenie, w dobie coraz szybszych łącz internetowych. Coraz częściej jednak strony przeglądamy w urządzeniach mobilnych, gdzie internet nie zawsze jest super szybki i super tani. ;-) Poza tym w przypadku bardzo dużych serwisów każde kilka kilobajtów na użytkownika zaczyna mieć znacznie.
(czytaj dalej…)

Zostaw komentarz :, , więcej...

Pionowy tekst w PHP

napisany przez w dniu 12 gru 2010, w kategorii PHP, Rozwiązania

Natrafiłem na problem, polegający na tym, że potrzebowałem wyświetlić pionowy tekst na stronie WWW (w kolumnach tabeli). Być może są lepsze rozwiązania, ale ja to zrobiłem tak:

(czytaj dalej…)

Zostaw komentarz :, , , , więcej...

Generowanie dokumentu PDF z poziomu skryptu PHP

napisany przez w dniu 20 lis 2010, w kategorii PHP, Rozwiązania

Coraz więcej mojej pracy zawodowej wiąże się z programowaniem serwisów internetowych w PHP. Dlatego będę teraz co jakiś czas publikował rozwiązania ciekawych problemów, z którymi spotkałem się przy tworzeniu WWW. Oczywiście to nie znaczy, że nie będę publikował rozwiązań problemów z innych dziedzin. ;-)
Właśnie skończyłem ciekawy projekt, którego jednym z elementów było generowanie dokumentów PDF. W pierwszej chwili pomyślałem, że  będzie to trudne. Nie taki jednak diabeł straszny.

(czytaj dalej…)

3 komentarzy :, , więcej...

Szukasz czegoś?

Użyj tego formularza, aby przeszukać stronę:

Inne blogi

Oto kilka moich ulubionych blogów...