Jblew.pl - Notatnik młodego programisty. Elektronika, webmastering, programowanie.



[PHP] Prosty sposób na odczytywanie danych XML

Jak zapewne zauważyliście dodałem na bloga skrypt wyświetlający wpisy z twittera między wpisami z bloga. Zanim jednak można będzie wyświetlić dane, trzeba je najpierw pobrać z serwera. Najłatwiejszym sposobem na pobranie wpisów twittera jest odczytanie kanału rss danego użytkownika.

Z każdego znacznika <item> (w kanale rss) potrzebujemy 3 znaczników: <title>, <pubDate> i <link>.

Niektórzy pewnie chcieliby pewnie wyciągnąć te dane używając wyrażeń regularnych. Do dzisiaj należałem do tych ludzi. Używanie bibliotek parsujących xml wydawało mi się skomplikowane i nieprzyjemne. Jednak w istocie tak nie jest. PHP posiada łatwą w użyciu bibliotekę DOMDocument. W naszym wypadku kod jest naprawdę krótki:

$objDOM = new DOMDocument();
    //pobieramy kanal rss i tworzymy liste zawierajaca elementy ITEM
$objDOM->load("http://adres.kanalu.rss/z/twittera"); 
$items = $objDOM->getElementsByTagName("item");

foreach( $items as $item ) {        
    //w petli wyciagamy wartosci z poszczegolnych znacznikow
    $title  = $item->getElementsByTagName("title")->item(0)->nodeValue;
    $pubDate = $item->getElementsByTagName("pubDate")->item(0)->nodeValue;
    $link = $item->getElementsByTagName("link")->item(0)->nodeValue;
}

Jak widzicie korzystanie z tej biblioteki to czysta przyjemność. ;) Wszystko można zrobić szybko i sprawnie. Kod łatwo jest zmodyfikować do swoich potrzeb.





Bezpieczeństwo haseł w bazie danych

Zauważyłem, że bardzo powszechne jest stwierdzenie, iż o bezpieczeństwie haseł decyduje ich długość, natomiast całkowicie zapomina się w tym momencie o algorytmie, który tworzy skrót. Na bardzo wielu stronach tworzenie skrótu wygląda tak: md5($hash). Funkcja jest bardzo prosta, wykonuje się szybko…
No właśnie, wykonuje się szybko… Działa to bardzo na korzyść hakera, który najczęściej, aby poznać hasło, szyfruje (takim samym algorytmem) po kolei miliony ciągów znaków i porównuje z hashem wykradzionym z naszej bazy danych. W jego interesie jest to, aby wszystko odbyło się jak najszybciej.
Natomiast właściciel strony internetowej, zwykle, nie musi porównywać milionów ciągów na sekundę, więc może sobie pozwolić na nieco dłuższe wykonywanie kodu.
Postanowiłem wykonać kilka pomiarów na swoim komputerze. Tworzenie skrótu md5("test"); trwa ok. 16us. Natomiast poniższy kod:

$str = md5("test");
for($i = 1;$i < 5000;$i++) {
$str = md5(base64_encode($str));
}

wokonuje się w 8000us, czyli 8ms, czyli 0.008 sekundy. Cóż to jest dla systemu… Użytkownik nawet nie mrugnie, gdy skróty jego haseł zostaną porównane. Jednak haker będzie przez to łamał hasło 500 razy dłużej!

Oczywiście to „zabezpieczenie” będzie użyteczne dopiero gdy hakerowi uda się włamać na stronę, jednak nie możemy wykluczać takiego przypadku, a każda forma obrony naszej witryny jest warta zastosowania!




Tagi

Bannery

Create your own banner at mybannermaker.com!