abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 15:00 | Zajímavý článek

    Byl publikován přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) za uplynulé dva měsíce. Servo zvládne už i Gmail. Zakázány jsou příspěvky generované pomocí AI.

    Ladislav Hagara | Komentářů: 2
    9.5. 17:22 | Nová verze

    Raspberry Pi Connect, tj. oficiální služba Raspberry Pi pro vzdálený přístup k jednodeskovým počítačům Raspberry Pi z webového prohlížeče, byla vydána v nové verzi 2.5. Nejedná se už o beta verzi.

    Ladislav Hagara | Komentářů: 0
    9.5. 15:22 | Komunita

    Google zveřejnil seznam 1272 projektů (vývojářů) od 185 organizací přijatých do letošního, již jednadvacátého, Google Summer of Code. Plánovaným vylepšením v grafických a multimediálních aplikacích se věnuje článek na Libre Arts.

    Ladislav Hagara | Komentářů: 0
    8.5. 19:22 | Nová verze

    Byla vydána (𝕏) dubnová aktualizace aneb nová verze 1.100 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.100 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    8.5. 18:00 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.

    Ladislav Hagara | Komentářů: 0
    8.5. 01:22 | Nová verze Ladislav Hagara | Komentářů: 0
    8.5. 00:55 | Zajímavý projekt

    PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.

    vlk | Komentářů: 0
    7.5. 19:44 | Nová verze

    Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    7.5. 17:33 | Nová verze

    Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.

    Ladislav Hagara | Komentářů: 0
    7.5. 05:33 | Komunita

    Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.

    Ladislav Hagara | Komentářů: 17
    Jaký filesystém primárně používáte?
     (57%)
     (1%)
     (8%)
     (22%)
     (4%)
     (2%)
     (3%)
     (1%)
     (1%)
     (3%)
    Celkem 579 hlasů
     Komentářů: 26, poslední 8.5. 09:58
    Rozcestník

    Dotaz: PHP jak zakázat odeslání formuláře mimo stránky

    7.9.2011 18:16 ztc89
    PHP jak zakázat odeslání formuláře mimo stránky
    Přečteno: 435×
    Ahoj, poradí prosím, jak udělat to, že můžu odeslat formulář jen ze stránek na které ten formulář je? Děkuji za pomoc

    Řešení dotazu:


    Odpovědi

    MMMMMMMMM avatar 7.9.2011 18:39 MMMMMMMMM | skóre: 44 | blog: unstable | Valašsko :-)
    Rozbalit Rozbalit vše Re: PHP jak zakázat odeslání formuláře mimo stránky
    Napadá mne kontrola refereru při zpracování toho formuláře serverem, ale referer se dá snadno podvrhnout. Tak mne ještě napadá, co vytvořit session (v cookies) na stránce, kde je formulář vytvořený a potom kontrolovat planost této session během zpracování odeslaného formuláře? Pokud by žádná session nebyla vytvořena, znamenalo by to, že byl formulář odeslán z jinama nebo že má dotyčný zakázány Cookies. :-)
    bazil avatar 7.9.2011 18:51 bazil | skóre: 33 | blog: sluje | Miroslav
    Rozbalit Rozbalit vše Re: PHP jak zakázat odeslání formuláře mimo stránky
    cookies taky ne, uživatel by musel navštívit stránku (aby se vytvořila session a cookies) a až po té by musel kliknout na link s formulářem >> neřeší situaci, když přijde uživatel na server přímo na stránky s formulářem

    řešením by mohlo být generování náhodného ID formuláře, které by se ukládalo na serveru a přikládalo jako skrytá hodnota formuláře. pokud by náhodné id nebylo nalezeno uloženo na serveru, tak by to znamenalo neplatné odeslání formuláře. vylepšením by mohla být časová platnost formuláře jen na určitou dobu (smazat po určité době ID) ... btw ty ID se stejně musí nějakým způsobem časem mazat.

    PS: ony i ty session cookies se dají podvrhnout
    bazil avatar 7.9.2011 18:53 bazil | skóre: 33 | blog: sluje | Miroslav
    Rozbalit Rozbalit vše Re: PHP jak zakázat odeslání formuláře mimo stránky
    teda vkládat přímo jako náhodnou hodnotu, nejlépe pomocí JS, páč ten se blbě simuluje (ale stejně nezabráníte vložení stránky do iframu)
    7.9.2011 18:54 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: PHP jak zakázat odeslání formuláře mimo stránky
    Není problém si to náhodné ID z formuláře přečíst a pak vložit do svého formuláře.
    7.9.2011 18:47 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: PHP jak zakázat odeslání formuláře mimo stránky
    Nijak, protože nic takového jako „formulář je ve stránkách“ neexistuje – to je jen lidská představa, že když to má stejnou doménu a vypadá to podobně, tvoří to nějaký celek. Technicky to ale nijak propojené není. Nanejvýš můžete udělat nějaké kontroly, příklady popsal kolega výše – ale ty mohou bránit použití oprávněným uživatelům a naopak „záškodník“ je více či méně snadno obejde. Přinejhorším bude programově simulovat práci uživatele s prohlížečem.
    7.9.2011 19:37 l4m4
    Rozbalit Rozbalit vše Re: PHP jak zakázat odeslání formuláře mimo stránky
    Lze zajistit přijetí dat pouze od autentizovaného klienta, což ve většině praktických případů splňuje tazatelův požadavek.

    Nemá samozřejmě smysl se zabývat obcházením na straně klienta, protože jak to přesně udělá, že se autentizuje, dostane formulář a odešle ho (autentizovaně), je implementační detail na jeho straně.
    7.9.2011 20:18 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: PHP jak zakázat odeslání formuláře mimo stránky
    Lze zajistit přijetí dat pouze od autentizovaného klienta, což ve většině praktických případů splňuje tazatelův požadavek.
    Nesplňuje, to je něco úplně jiného. Je možné, že tazatel ve skutečnosti chce to, co popisujete – bohužel jsou tady časté dotazy, kde se někdo ptá na něco úplně jiného, než co potřebuje vyřešit.
    7.9.2011 21:18 l4m4
    Rozbalit Rozbalit vše Re: PHP jak zakázat odeslání formuláře mimo stránky
    Jak už jsi napsal, brát doslovně ,odeslat ze stránek` je nesmysl - formulář odesílá klient. Tak proč to bereš doslovně?

    Je to zkratkovité vyjádření požadavku na vazbu mezi klientem a těmi stránkami, tedy že platně může formulář odeslat pouze na základě toho, že ho získal z těch stránek a vazba, která mu to umožnila, stále trvá. A to je přesně ono.
    8.9.2011 08:21 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: PHP jak zakázat odeslání formuláře mimo stránky
    IDOS se kdysi snažil zabránit tomu, aby si někdo jiný mohl dát na svůj web formulář s předvyplněnými hodnotami (odkud, kam) a ten pak odeslat do vyhledávání IDOSu. Asi jim to jedno zobrazení reklamy na formuláři navíc stálo za to nutit uživatele, aby názvy stanic vyplnil, i když mohly být předvyplněné. Snažili se tedy kontrolovat právě to, zda byl dotaz poslán z „jejich“ formuláře. Tazatel se podle mne ptal právě na tohle. Ovšem vzhledem k tomu, že tazatel se zatím vůbec neobtěžoval upřesnit, co vlastně chce, asi to měl být jenom podnět pro nás k diskusi a ve skutečnosti to tazatele vůbec nezajímá…
    xkucf03 avatar 7.9.2011 19:32 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše CSRF, XSRF, CAPTCHA, nejde to
    Tvůj problém se jmenuje CSRF a typicky se řeší tak, že formulář obsahuje skryté pole a v něm náhodnou hodnotu vygenerovanou na serveru (CSRF token) a při odeslání formuláře se kontroluje tato hodnota – pokud byl formulář odeslán ze stránek útočníka, tato hodnota chybí nebo je nesprávná.

    Pak je ještě možnost, že nechceš předejít útokům na uživatele, ale chceš uživatelům zabránit odesílání formuláře odjinud (třeba vlastním skriptem) a to nejde. Skript/program může simulovat chování prohlížeče (včetně všech tokenů, hlaviček, cookies atd.) a na serveru nepoznáš, jestli to posílal uživatel vyplněním formuláře na webu nebo nějaký jeho skript (pak leda CAPTCHA, ale ani ta často nefunguje – dá se např. roboticky rozpoznávat text – OCR atd.).
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    8.9.2011 00:21 Kit
    Rozbalit Rozbalit vše Re: PHP jak zakázat odeslání formuláře mimo stránky
    Jak už tady psali mnozí: Ochrana je obtížná, ale při běžných nárocích se vcelku úspěšně dá využít session, předvyplněné skryté pole, nevyplněné skryté pole a případná kontrola IP v session. Když k tomu přidám povinný náhled jako např. na abclinuxu.cz, dostanu sice ne 100%, ale jinak vcelku solidní ochranu proti nevhodným požadavkům.

    Kdysi mi stačilo, abych testoval políčko s dnem rezervace na hodnotu 1-31. Tenkrát to kupodivu vyfiltrovalo značné množství spamu. Velmi oblíbení je skryté pole "nick", které roboti velmi rádi vyplňují.

    Správná odpověď na původní otázku zní: Kontroluj hlavičku Referrer. Ovšem všichni víme, jak snadno se dá podvrhnout a jak snadno je možné odmítnout paranoidního uživatele. Proto vznikla Captcha, což je vlastně Turingův test.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.