publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
7 skomentuj »

TAGI: xhp , php , facebook , xml , xss , czytelność

2010-02-11 15:26  |  Adam Golański

XHP: Facebook wprowadza obsługę XML-a do kodu PHP

XHP: Facebook wprowadza obsługę XML-a do kodu PHP

Pisanie front-endowych skryptów w PHP kończy się zwykle nieładnym przemieszaniem kodu HTML i PHP. Oprócz problemów z czytelnością, często też dochodzi do narażenia takiej aplikacji na ataki XSS. Marcel Georgés Laverdet II z Facebooka zaprezentował tymczasem rozszerzenie XHP, które może rozwiązać oba problemy.

XHP to coś pośredniego pomiędzy pełnym systemem szablonów typu Smarty, a biblioteką interfejsu użytkownika dla PHP. Pozwala popularnemu językowi na rozumienie XML-owych fragmentów dokumentów, podobnie jak to jest w projekcie E4X dla JavaScriptu.

Jak to w praktyce wygląda? Laverdet przedstawia prosty skrypt – formularz w PHP/HTML, w którym widać, jak nużące jest ciągłe przełączanie się między oboma językami:

<?php
if ($_POST['name']) {
?>
<span>Hello, <?=$_POST['name']?>.</span>

<?php
} else {
?>
<form method="post">
What is your name?<br>
<input type="text" name="name">
<input type="submit">
</form>
<?php
}

Oprócz ciągłego wykorzystania znaczników otwarcia i zamknięcia kodu PHP, trzeba męczyć się z liniową składnią w wyrażeniach. Deweloper Facebooka pisze, że oczywiście można zrezygnować z przełączania się między językami i stosować pseudofunkcję echo(), ale to naraża nas na atak. W podanym przykładzie zresztą też widać już od razu podatność: wykorzystanie zmiennej $_POST pozwala na XSS. Wejście powinno być zatem wcześniej odfiltrowane funkcją htmlspecialchars().

Czy jednak pisanie aplikacji w taki sposób, w których bezpieczeństwo to wyjątek wymagający starań, a nie reguła, jest na pewno najlepszy?

«poprzednia 1 2 następna »

publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
7 skomentuj »

Komentarze

  • Krzysztof Warunek

    #1 Krzysztof Warunek 2010-02-11 17:32:38 0

    prawdą jest, że trzeba stworzyć problem na nowo, żeby go na nowo rozwiązać.

    polecam osobom z podobnymi problemami poczytanie sobie np. Zope (dla Pythona), czy dla php: PHPTal + jakiś lekki(najlepiej własny:) ) framework

    IP: 89.75.2.[...] Opera/9.80 (X11; FreeBSD 8.0-RELEASE amd64; U; pl) Presto/2.2.15 Version/10.00

  • MariuszT

    #2 MariuszT 2010-02-11 18:39:36 0

    Rewolucji nie ma... Przy ich ruchu takie optymalizacje mają sens (bo rozwiązania są wbudowane w PHP a nie zbudowane w tym języku) ale dla większości witryn wystarczą zwykłe systemy szablonów i inne proste operacje, które dostarczają takich samych metod.

    IP: 62.141.255.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)

  • RJay

    #3 RJay 2010-02-12 00:33:23 0



    Poważnie, programiści z Facebooka robią spaghetti, łącząc PHP z HTML-em w jednym pliku? I SQL-a też w HTML-u wywołują? Brawo!

    Aż mi się przypomnieli programiści Flickr, którzy wymyślili genialny sposób branchowania kodu.

    if ($active_branch == 1) {

    // branch 1

    } else if ($active_branch == 2) {

    // branch 2

    }

    Niesamowite, że tak duże serwisy zalatują taką amatorszczyzną. No ale niestety, w PHP o nią najłatwiej…

    IP: 194.63.133.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; pl-pl) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10

  • Marek

    #4 Marek® 2010-02-12 00:42:36 0

    Boże! Kto w dzisiejszych czasach miesza PHP z HTML!!! Nawet w niewielkich projektach wygodnie jest skorzystać z xslt i mieć święty spokój ze spaghetti czy podstawowymi błędami html. Wynalazki typu Smarty też lepiej szerokim łukiem. 

    @RJay: oszczędzę sobie powtarzania Twojej trafnej riposty.

    IP: 83.14.160.[...] Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.10

  • aaarrr

    #5 aaarrr 2010-02-12 08:41:48 0

    php + html to nic zlego - dzialo to o niebo szybciej niz wzelkiego rodzaju szablony czy XSLT (ile firm uzywa XSLT do budowy html - moze 1% firm).

    nawet uzywajac wzorca MVC mozna uzyc szablonow php a nie szablonow typu smarty czy phptal. chyba prawie kazdy framework daje taka mozliwosc. jaka jest naprawde korzysc z tego ze nie uzyje sie tam php w szablonie? przeciez z samego swojego zalozenia php byl jezykiem projektowanym do mieszkania go z html.

    do poprawnego napisania kodu html nie trzeba uzywac jakis szablonow czy czegokolowiek innego. jak ktos potrafi nappisac dobry html to na co mu xslt?

    mialem okazje dlugi czas pracowac z ZOPE (wykonujac projekty dla duzych korporacyjnych firm) i nie zauwazylem specjalnie korzysci z uzywania ich szablonow, zwlascza ze czesto trzeba bylo kombinowac jak dobrze opracowac szablon gdy pojawialo sie wiele petli a w nich warunki oraz uczyc kazdego nowego pracownika uzywania akurat tych szablonow.

    korzysci w firmie wiele nie bylo z tego bo poza nauka pythona trzeba bylo dodatkowo uczyc sie systemu szablonow.

    nie wiem w jakim swiecie zyjecie, naprawde bardzo wiele projektow naet tych najwiekszych tak jest programowanych bo tak jest komus wygodniej, szybciej itp. poprawnosc z regulami nie ma znaczenia jesli dane rozwiazanie sprawdza sie i dziala ,zwlasxcza ze czesto sa to amkniete rozwiazania , nie uzywane nigdzie jako open source i nie wymagaja takiego podejscia  ze trzeba kazdemu zapewnic czytelnosc kodu jesli wszyscy uczestniczacy w danym projekcie dobrze sobie z nim radza.

    ocena projektu po tym czy miesza kod html z php  czy uzywa xslt to jakis masochizm programistow, ktorzy wogole nie przyjmuja do wiadomosci ze najwazniejsza jest skutecznosc danego rozwiazania a nie poprawnosc z jakims tam wzorcem.

    czy jacys programisci w google przejmuja sie ze ich wyszukiwarka waliduje sie czy nie waliduje jako html? wazne ze ma max malo kodu i dobrze dziala

    IP: 217.173.178.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)

  • aaarrr

    #6 aaarrr 2010-02-12 13:39:36 0

    "ocena projektu po tym czy miesza kod html z php czy uzywa xslt to jakis masochizm programistow, ktorzy wogole nie przyjmuja do wiadomosci ze najwazniejsza jest skutecznosc danego rozwiazania a nie poprawnosc z jakims tam wzorcem."

    jesli sie pisze i zapomina to masz racje, ale jesli musisz pozniej rozwijac i dbac o taki soft to strzelasz sobie w stope juz na starcie.

    IP: 89.72.22.[...] Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.2.15 Version/10.10

  • leszlo

    #7 leszlo 2010-02-13 14:50:12 0

    Panowie to ja Wam powiem dlaczego tak jest i nawet skąd taka propozycja facebook-a.

    Jeszcze rok temu pracowałem w "topowej" polskiej firmie robiącej w php duże projekty dla największych firm i instytucji w Polsce. Poziom pisania kodu jest dokładnie taki jak na zrzutach kodu w artykule. Duże firmy wcale nie mają najlepszych, mają przeciętnych ale wiernych. Dopiero to co prezentuje ostatnio facebook uświadomiło mi podobieństwo. Oni poprostu nie mają wyboru, muszą się zabezpieczać i łatwiej im uprościć nieznacznie język niż podnosić kwalifikacje setek pracowników.

    A dla programistów którzy naprawdę piszą w stylu OOP polecam Blitz Templates (http://alexeyrybak.com/blitz/blitz_en.html). Naprawdę warto się pobawić z kompilacją. Po tym jak to wdrożyłem twierdzę że żaden inny system szablonów pisany w PHP nie ma już sensu.

    To że nie ma jeszcze wersji 1.0 znaczy tylko że nie ma kompletnej dokumentacji. Kod działa stabilnie i sprawuje się perfekcyjnie.

    IP: 83.14.144.[...] Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7 FirePHP/0.4

Uwaga! Możesz zarejestrować się w serwisie i w ten sposób zarezerwować swój nick oraz ominąć konieczność ciągłego odczytywania wyrazów.

Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka (słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.

Polecane książki

Czytaj Webhosting

Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.

Zarejestruj domenę

Sprawdź dostępność swojej domeny:

.pl: 0 zł   .com: 19.90 zł
.com.pl: 0 zł   .eu: 19.90 zł