About IT by Karol Nawrot

Rozwiązania

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...

Restart BlackBerry, bez wyjmowania baterii

napisany przez w dniu 11 maj 2011, w kategorii Rozwiązania, Sprzęt

Ostatnio zastanawiałem się, czy jest jakiś sposób, na restart BlackBerry, bez wyjmowania baterii. Już miałem nawet szukać odpowiedniej aplikacji w AppWorld, ale okazało się, że chciałem użyć armaty na wróbla.

Aby restartować telefon wystarczy wcisnąć (i chwilę przytrzymać) ALT + (prawy) Shift + Del i gotowe. ;-)

Zostaw komentarz : więcej...

Restart kart sieciowych, w przypadku braku połączenia sieciowego

napisany przez w dniu 09 kwi 2011, w kategorii Narzędzia, Rozwiązania

Kilka dni temu zostaliśmy zmuszeni, do przekonfigurowania naszego serwera WWW. Po dołożeniu trzeciej karty sieciowej i konfiguracji usługi routingu, zewnętrzne karty sieciowe zaczęły nam się zawieszać w losowych odstępach czasu. Ciekawe jest to, że w dzienniku zdarzeń jest czysto, a połączenie sieciowe jest wtedy aktywne, ale karty nie odpowiadają na próby nawiązania połączenia. Ciągle szukamy przyczyny problemu, ale w międzyczasie serwer musi działać. Napisałem więc skrypt, który diagnozuje problemy sieciowe i w razie problemu restartuje karty.

(czytaj dalej…)

1 komentarz :, 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...

Uruchamianie zdarzenia OnClick, z poziomu skryptu JavaScript.

napisany przez w dniu 16 lut 2011, w kategorii JavaScript, Rozwiązania

Ostatnio zdarzyło mi się, że potrzebowałem ręcznie uruchomić zdarzenie OnClick jednego z elementów na stronie, z poziomu mojego skryptu JavaScript. Rozwiązanie nie było tak banalne, jak myślałem. Problem załatwia poniższa funkcja, którą znalazłem w sieci:

function fireElement(objID) {
var target=document.getElementById(objID);
if(document.dispatchEvent) { // W3C
var oEvent = document.createEvent( "MouseEvents" );
oEvent.initMouseEvent("click", true, true,window, 1, 1, 1, 1, 1, false, false, false, false, 0, target);
target.dispatchEvent( oEvent );
}
else if(document.fireEvent) { // IE
target.fireEvent("onclick");
}
}
Zostaw komentarz :, , więcej...

Instalowanie i zarządzanie przeglądarką Firefox via GPO

napisany przez w dniu 02 lut 2011, w kategorii Rozwiązania

Lubię Microsoft za to, że ich produkty bez problemu “gadają” ze sobą i są względnie łatwe w centralnej konfiguracji. Właściwie wszystko w mojej sieci jest instalowane i konfigurowane przez Active Directory i Group Policy. Z tego powodu w mojej sieci wciąż używamy Internet Explorera – nie ma problemu z jego centralną konfiguracją. Okazuje się jednak, że i Lisa da się w ten sposób oswoić.

(czytaj dalej…)

5 komentarzy :, , , , więcej...

Rozmieszczanie VirtualBox z GroupPolicy i instalacja niepodpisanych sterowników

napisany przez w dniu 05 sty 2011, w kategorii Rozwiązania

Dosyć dawno temu musiałem zainstalować na kilku komputerach VirtualBox’a. Mam zasadę, że wolę poświęcić trochę czasu, aby zautomatyzować na przyszłość jakąś rzecz, niż bawić się ręcznie, w wykonywanie tego samego na kilku komputerach. W związku z tym praktycznie całe oprogramowanie w moich sieciach jest instalowanie centralnie. Tak też postanowiłem zrobić z VirtualBox’em. Nie było to jednak na tak proste, jak zawsze.

(czytaj dalej…)

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

Migracja drukarek i ustawień, między komputerami

napisany przez w dniu 27 gru 2010, w kategorii Narzędzia, Rozwiązania

Dzisiaj krótki wpis nt. bardzo przydatnego narzędzia – Print Migrator. Jeśli musisz przenieść drukarki i sterowniki, między komputerami, firma Microsoft udostępnia do tego darmowe narzędzie, które można pobrać tutaj.

(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...