Comments on: FPD aneb Full Path Disclosure http://OFFLINEZIP.wpsho2012/04/fpd-aneb-full-path-disclosure/ Od vývojářů, pro vývojáře Sun, 15 Mar 2020 15:52:20 +0000 hourly 1 https://wordpress.org/?v=4.8.12 By: Michal Špaček http://OFFLINEZIP.wpsho2012/04/fpd-aneb-full-path-disclosure/#comment-240 Tue, 22 May 2012 21:46:56 +0000 https://m6voqmbe.versionpress.com/?p=250#comment-240 Pomocí ukončování die() se dá poznat, jestli daný soubor vůbec existuje, nebo ne. To může mnoho napovědět. Lepší je prostě zobrazit standardní Not Found/404 stránku přesně takovou, jakou zobrazujeme, když návštěvník nenajde to, co hledal.

Pokud píšeme objektově, tak nás to nespasí. Stačí mít třídu, které chybí rodičovská třída a chybová hláška při přímém přístupu je na světě, přesně tak, jak ukázal Jakub Tesárek o příspěvek výše.

]]>
By: JSifalda http://OFFLINEZIP.wpsho2012/04/fpd-aneb-full-path-disclosure/#comment-206 Tue, 15 May 2012 20:21:08 +0000 https://m6voqmbe.versionpress.com/?p=250#comment-206 Zobrazování skriptů přímo se dá zabránit také tak, že pokud v loaderu (či podobném scriptu) definujete konstantu, a obsah si pak taháte dynamicky, stačí na začátek všech svých souborů (scriptů) přidat podobný řádek tomuto:

defined('START') or die('No direct access allowed.');

dežo možná narážel na to, že pokud píšeme objektově, tak spousta souborů jsou pouze knihovny, a pokud takový soubor uživatel chce zobrazit přímo, tak efekt je žádný, pokud se nemýlím?!

]]>
By: Jakub Tesárek http://OFFLINEZIP.wpsho2012/04/fpd-aneb-full-path-disclosure/#comment-169 Sun, 06 May 2012 21:47:45 +0000 https://m6voqmbe.versionpress.com/?p=250#comment-169 Jen tak narychlo
class Foo extends Bar {}
Pokud si takovýhle soubor někdo otevře a já nebudu mít na serveru vypnuté zobrazování errorů, tak mám úplně stejný problém jako kdybych třídy nepoužíval.

]]>
By: Michal Špaček http://OFFLINEZIP.wpsho2012/04/fpd-aneb-full-path-disclosure/#comment-168 Sun, 06 May 2012 21:36:25 +0000 https://m6voqmbe.versionpress.com/?p=250#comment-168 dežo, prozraď mi prosím, jak psaním tříd snížím problém, díky.

]]>
By: dežo http://OFFLINEZIP.wpsho2012/04/fpd-aneb-full-path-disclosure/#comment-167 Sun, 06 May 2012 18:33:24 +0000 https://m6voqmbe.versionpress.com/?p=250#comment-167 základ je skrytí pomocí htacess. Kdo píše třídy, tak problém snižuje, prostě se jen definuje třídu.

Jinak ohledně NEtte:, holt nemá zaplou laděnku.

]]>
By: LuKo http://OFFLINEZIP.wpsho2012/04/fpd-aneb-full-path-disclosure/#comment-138 Tue, 01 May 2012 15:44:52 +0000 https://m6voqmbe.versionpress.com/?p=250#comment-138 Protozoon, starenka: Většina lidí asi dává za přesměrování exit. Aby se zbytečně nezpracovával zbytek skriptu (tahat data z databáze, když se pak zahodí atd.), kde by se mohly vyskytnout chyby, proti kterým se přesměrováním na nějakou error stránku bráním. Pokud dojde k chybě před přesměrováním, dostanu klasickou Headers already sent by… Často se dělá přesměrovací pojistka, kdy se do stránky udělá přesměrování pomocí meta i pomocí javascriptu a pro jistotu ještě s textem “Pokud nedošlo k automatickému přesměrování, klikněte na následující odkaz…”. A o tom je zřejmě zmínka v článku.

]]>
By: Jakub Bouček http://OFFLINEZIP.wpsho2012/04/fpd-aneb-full-path-disclosure/#comment-134 Mon, 30 Apr 2012 08:08:22 +0000 https://m6voqmbe.versionpress.com/?p=250#comment-134 Protozoon a starenka: Nehledej v tom žádnou složitost. Hlavička Location neukončuje výstup a stránka normálně může pokračovat obsahem – i když jej uživatel nikdy neuvidí. Je to pouze hlavička stejně jako Content-Type a další. Pokud tedy pošleš Location a následně neukončíš skript pomocí die(), tak pomocí echo() lze poslat regulérní obsah stránky včetně chybových hlášek.

Zkus si poslat hlavičku Location a následně vygenerovat a poslat na výstup několik MB textu. I když se ti nezobrazí, prohlížeč jej poslušně stahne.

]]>
By: Jakub Tesárek http://OFFLINEZIP.wpsho2012/04/fpd-aneb-full-path-disclosure/#comment-133 Mon, 30 Apr 2012 06:21:55 +0000 https://m6voqmbe.versionpress.com/?p=250#comment-133 [to Protozoon]: Ano, používá se na to output buffer
ob_start();
//něco vypisuju nebo přesměrovávám
ob_end_flush(); //vypisuju buffer

]]>
By: Protozoon http://OFFLINEZIP.wpsho2012/04/fpd-aneb-full-path-disclosure/#comment-132 Mon, 30 Apr 2012 06:10:12 +0000 https://m6voqmbe.versionpress.com/?p=250#comment-132 2 starenka: No, to je jednoduche. To, ze posles hlavicku s pozadavkem na presmerovani a browser to udela, jeste neznamena, ze neposles nejaka data, resp. obsah stranky. Takze pak staci neco, co nereaguje na presmerovani (wget, curl, nebo cokoli co tu stranku jen stahne) a uvidis tam tu chybovou hlasku.

Navic v PHP muzes vypsat neco na vystup a az pak presmerovat, tusim, ze se na to vyuziva nejakej buffer.

]]>
By: starenka http://OFFLINEZIP.wpsho2012/04/fpd-aneb-full-path-disclosure/#comment-131 Mon, 30 Apr 2012 05:33:13 +0000 https://m6voqmbe.versionpress.com/?p=250#comment-131 Omlouvam se – zrejme me budes mit za chlapce prostsiho televizni rosnicky, ale proste mi to neda. Ohledna chybovejch hlasek pred presmerovanim: jakym pusobem to ma fungovat? Pokud vysolim nejakej output, bude mi header s location na nic – cili nepresmeruju. Leda ze by se presmerovavalo js a tam zas nevidim moc moznost dostat sever side hlasku. Jak mi v tomhle ma pomoc curl/wget oproti normalnimu browseru? Dik za vysvetleni.

]]>