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.
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.
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.
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…
Posłuchaj jednego z naszych 8 cyberwykładów. Wiedzę podajemy z humorem i w przystępny dla każdego pracownika sposób. Zdalnie lub u Ciebie w firmie. Kliknij tu i zobacz opisy wykładów!
Każdy powinien zobaczyć te webinary! Praktyczna wiedza i zrozumiały język. 6 topowych tematów — kliknij tutaj i zobacz szczegółowe opisy oraz darmowy webinar.
tak samo “evil” jest funkcja print_r, albo echo, a nawet var_dump ! ;)
Error establishing a database connection :)
Jakiś mirror? :)
http://webcache.googleusercontent.com/search?q=cache%3Ahttp%3A%2F%2F0xa.li%2Fphp-date-is-xssable%2F&oq=cache%3Ahttp%3A%2F%2F0xa.li%2Fphp-date-is-xssable%2F&aqs=chrome..69i57j69i58.1320j0j4&sourceid=chrome&espv=2&es_sm=122&ie=UTF-8
z google cache:
http://webcache.googleusercontent.com/search?hl=en&q=cache%3A0xa.li%2Fphp-date-is-xssable%2F
gugle kesz
http://webcache.googleusercontent.com/search?q=cache:E8rn9SyFS3YJ:0xa.li/php-date-is-xssable/+&cd=1&hl=pl&ct=clnk&gl=pl
google:
http://webcache.googleusercontent.com/search?q=cache%3Ahttp%3A%2F%2F0xa.li%2Fphp-date-is-xssable%2F
(original query = cache:http://0xa.li/php-date-is-xssable/)
Cache Google’a?
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
http://webcache.googleusercontent.com/search?q=cache:E8rn9SyFS3YJ:0xa.li/php-date-is-xssable/+&cd=1&hl=pl&ct=clnk&gl=pl&client=firefox-a
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.
@Koscik: bądź sprytny – skorzystaj z Google cache:
http://webcache.googleusercontent.com/search?q=cache:E8rn9SyFS3YJ:0xa.li/php-date-is-xssable/
Error establishing a database connection
cache
http://webcache.googleusercontent.com/search?q=cache:E8rn9SyFS3YJ:http://0xa.li/php-date-is-xssable/%2Bphp-date-is-xssable/
http://dpaste.com/hold/1739298/
borze jak śmiesznie :3
JavaScript nie posiada formatowania czasu. Przerzucam się na NodeJS.
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.
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
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…