12:23
17/3/2014

* XSS w PHP-owym date()

Pamiętajcie o encodingu wyjścia date(), bo możecie się zdziwić ;)

Przeczytaj także:

Ten wpis pochodzi z naszego linkbloga *ptr, dlatego nie widać go na głównej.
*ptr możesz czytać przez RSS albo przez sidebar po prawej stronie serwisu.

23 komentarzy

Dodaj komentarz
  1. tak samo “evil” jest funkcja print_r, albo echo, a nawet var_dump ! ;)

  2. Error establishing a database connection :)

  3. Jakiś mirror? :)

  4. mirror Google Cache:
    http://webcache.googleusercontent.com/search?output=search&sclient=psy-ab&q=cache%3Ahttp%3A%2F%2F0xa.li%2Fphp-date-is-xssable%2F&oq=cache%3Ahttp%3A%2F%2F0xa.li%2Fphp-date-is-xssable%2F&gs_l=hp.3..0l4.307.1442.0.1615.7.7.0.0.0.0.142.569.0j5.5.0….2…1c.1.37.psy-ab..2.5.542.STmOi3O2amw&pbx=1

  5. Z F-Secure:

    Szkodliwa witryna internetowa zablokowana

    http://0xa.li/php-date-is-xssable/

    Ta witryna została zgłoszona jako szkodliwa.
    Odwiedzanie tej witryny nie jest zalecane.

  6. @Koscik: bądź sprytny – skorzystaj z Google cache:
    http://webcache.googleusercontent.com/search?q=cache:E8rn9SyFS3YJ:0xa.li/php-date-is-xssable/

  7. Error establishing a database connection

  8. http://dpaste.com/hold/1739298/

    borze jak śmiesznie :3

  9. JavaScript nie posiada formatowania czasu. Przerzucam się na NodeJS.

  10. Bardzo głupi błąd. Można go porównać do podania inputa jako pierwszego parametru (formatu) do printf() w C. Niektórzy pewnie powiedzą, że taka funkcja może się przydać, ale przydałoby się przeprowadzić validację na podanym przez usera formacie.

    Poza tym, kto na templatach nie kodzi, ten userom szkodzi (a w poważnych aplikacjach wypisywanie czegokolwiek na output bez automatycznego escapowania w ramach silnika szablonów powinno wręcz być zabronione).

    W Node.js sytuacja wygląda o tyle dobrze, że z Expressem dostajemy domyślnie wsparcie dla wielu silników szablonów (z czego chyba Jade cieszy się największą popularnością) i nie ma kombinowania z jakimś Smarty. Po prostu zwykła ścieżka nauki tworzenia stron internetowych na Node prowadzi przez poprawne wykorzystanie templatów, podczas gdy do PHP istnieje tyle złych poradników, tutoriali i książek, że łatwiej znaleźć opis utrwalający jeżące włos na głowie złe praktyki, niż “perełkę”, w której wszystko zostało zrobione bezpiecznie i poprawnie.

    • Spoko, spoko tylko od jakiegoś czasu nowoczesne aplikacje (nie mam na myśli bloga) są często wykonywane jako PHP REST API + HTML5 + JS więc smarty i inne szablony nie są potrzebne.

      Zgadzam się, że wiele książek do PHP utrwala złe wzorce po prostu prezentując banalne przykłady nie związane z rzeczywistością, natomiast nie zwalnia to zawodowych programistów z odpowiedzialności za walidację danych wejściowych. Zasada jest tu bardzo prosta – cokolwiek przyszło z zewnątrz musi być zwalidowane – i nie ważne, czy dane wprowadził użytkownik do formularza na stronce, czy trafiają do aplikacji przez RESTowe API, czy zostały wyjęte z bazy danych.

  11. Myślałem przez chwilę i nie dałem rady wymyślić który system zarządzania treścią może pobierany od użytkownika parametr podać do date. Daty są raczej generowane automatycznie;

    Użyteczność tego błędu = 0. Już realnie większą użyteczność wykazywał XSS w funkcji phpinfo() (w parsowaniu URI) znaleziony parę ładnych lat temu.

    Ziew…

    • phpbb?

    • @zse.security.team chyba w pierwszej wersji bo nie w 3

  12. błąd? Nie widzę tutaj żadnego błędu. Funkcja pozwala wyświetlać dane w dowolnym formacie, więc jeśli można podawać też separatory, to oczywiste jest, że wyświetli podane losowe ciągi…

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: