Archive

Archive for the ‘JavaScript’ Category

Dlaczego ataki XSS są badzo groźne?

December 20th, 2006 6 comments
Ataki XSS (Cross Site Scripting) polegają na zmuszeniu przeglądarki ofiary do wykonania programu JavaScript atakującego. Muszę przyznać, że mój kod też jest na to podatny. Dziś wklepałem łatkę do serwisu clubbing.czest.pl – który napisałem już wiele, wiele lat temu. Wiele, wiele lat temu nienawidziłem JavaScriptu. Chyba każdy webmaster ma w swoim życiu okres w którym nie pała miłością do tego języka. Moja nienawiść objawiała się w ten sposób, że ignorowałem istnienie JavaScriptu. Nie wyobrażałem sobie, że wstrzyknięcie na moją stronę kodu HTML może być niebezpieczne dla Internautów. Zawsze pamiętałem o bezpieczeństwie serwera, ale bezpieczeństwo przeglądarki WWW obchodziło mnie średnio. Dziś jestem fanem JavaScript’u. Ten poteżny język programowania daje wiele możliwości, w tym takich, które mogą być wykorzystane przez złego człowieka. Już wiem, że bezpieczeństow przeglądarki WWW jest tak samo ważne, jak bezpieczeństwo serwera. Dlaczego XSS jest taki groźny? Hmm, warto pomyśleć, ilu webmasterów myślało tak jak ja – ignorując nielubiany javascript zapominało o zagrożeniach dla Internauty. Błędy można podzielić na takie, które powstają poprzez nieuwagę programisty i poprzez jego niewiedzę. W przypadku mojego serwisu CCP przyczyną błędu była niewiedza. Zdawałem sobie sprawe, z możliwość wstrzyknięcia na moją stronę złośliwego kodu, ale nie zdawałem sobie sprawy z zagrożeń jakie to za sobą niesie. Błąd w CCP umożliwiał przejęcie skromnych danych osobowych gromadzonych w tym serwisie, a także publikowanie postów pod cudzym nikiem – podobnie jak w Allegro publikowania aukcji. Błąd poprawiłem dodając jedną linijkę kodu do mojej aplikacji (mam nadzieję że definitywnie). Wracając do tematu – XSS jest groźny bo przez długie lata był ignorowany. Każdy szanujący się programista wiedział – co to jest SQL Injection i przed tym się bronił. Natomiast programista (PHP, Java) pełniący obowiązki webmastera nie musiał wiedzieć co to jest XSS i (tak jak ja) mógł ten atak zignorować. Wiele firm uważa, że webmaster to taki “upośledzony” programista. Webmaster – to ktoś – kto nie jest wystarczająco dobry, żeby być programistą ale na tyle dobry, że poradzi sobie z HTML i CSS. Ataki XSS nauczą nas tego, żeby Webmasterów traktować na równi z programistami tworzącymi kod działający po stronie serwera. Ataków XSS będzie jeszcze wiele i dużo groźniejszych niż ten na Allegro. Pojawią się też wirusy, działające poprzez atak XSS. A co najfajniejsze, przed atakiami XSS Internaute nic nie chroni. Żaden firewall, antywirus, ani zapora systemowa. Przed atakami XSS Internaute chroni wyłącznie Webmaster.
Categories: JavaScript Tags:

JavaScript Template Engine

October 27th, 2006 No comments
JavaScript Template Engine to biblioteka która przychodzi z pomocą wszystkim tym, którzy renderowali kod HTML w skrypcie JavaScript. Aplikacje WWW stają się coraz bardziej skomplikowane. Przyjazny dla internauty WEB 2.0 wymaga wiele od programisty. Po latach niełaski JavaScript wraca do gry. Pomimo błędnych implementacji jest to jedyny język programowania, który może realizować To – czego od stron internetowych oczekuje internauta. Wykonywany w przeglądarce internetowej program interfejsu staje się coraz barziej skomplikowany. Pisanie zaawansowanego kodu JavaScript wymaga zastosowania wzorców projektowych, między innymi takich jak MVC. Z punktu widzenia MVC prezentowana biblioteka JavaScript Template Engine odpowiada za warstwę widoku. Kod HTML może zostać wstrzyknięty do strony internetowej przy użyciu funkcji DOM, np.:
var name = 'Antek';
var html = '<div class="foo">Hello' + name + '!</div>';
document.getElementById('container).innerHTML = html;
Wszystko jest w porządku, do czasu aż wstrzykiwany kod HTML jest prosty. Jednak zaawansowany kod HTML osadzony wewnątrz kodu JavaScript jest mało czytelny. W językach programowania wykonywanych po stronie serwera problem ten rozwiązano poprzez wydelegowanie zadania związanego z renderowaniem kodu HTML do warsty widoku (wzorzec projektowy MVC). Warstwa widoku programowana jest zwykle w specjalnym języku, np.: Smarty, JSP, JSF. Aby wyrenderować wartstę widoku w JavaScript możemy użyć kilku technik.
  • łączenie stringów – fuj!
  • operacje na obiektach DOM: var d = document.createElement('div'); d.appendChild( document.createTextNode('Hello ' + name) ); – wadą tego rozwiązanie jest to, że trzeba się sporo napisać żeby osiągnąć porządany efekt. Dodatkowo kod ten nie jest czytelny dla starrej daty webmastera
  • Transformata XSLT – bardzo obiecujące i bardzo skomplikowane
JavaScript Template Engine przypomina system szablonów Smarty. W kodzie szablonu możemy używać zmiennych, predefiniowanych funkcji, instrukcji warunkowych i pętli. Możemy także uczyć szablon wykonywania nowych funkcji. Możemy też wykonywać operacje matematyczne używając notacji polskiej. Możliwe jest nawet pisanie własnych programów. Koniec nawijania! Przykład:
<div id="template">Hello {name}</div>
<script language="JavaScript">
var name = 'Antek';
var t = new Template();
t.assign( new TemplateVar( 'name', name ) );
var el = document.getElementById( 'template' );
el.innerHTML = t.fetch( el.innerHTML );
</script>
Jak łatwo się domyślić, po wykonanie kody element “template” będzie zawierał tekst: “Hello Antek”. Zapraszam na stronę projektu: http://code.google.com/p/jstemplate/
Categories: JavaScript Tags: