Stránka: 1 z 1
| [ Príspevkov: 18 ] | |
Autor | Správa |
---|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
Chcem kontrolovať, či je povolené cookies cez php. Teraz to mám spravené tak, že najprv cookies uložím a na druhej stránke kontrolujem, či existujú.
To má ale 2 problémy, kvôli ktorým sa to dá oklamať:
- ak užívateľ načíta stránku, vypne cookies a pokračuje na podstránku kde sa cookies vyžaduje
- ak niekto bez predošlého navštívenia stránky klikne na odkaz na moju podstránku, kde už sa cookies vyžaduje
Nechcem používať JS, lebo to je rovnako neisté. Dá sa to nejak riešiť ?
//viem, nespoliehať sa na cookies, ale jednoducho či existuje iný spôsob kontroly
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 | 181 Bydlisko: Nitra / Bra... |
1daemon1 píše: Teraz to mám spravené tak, že najprv cookies uložím a na druhej stránke kontrolujem, či existujú.
ako inak by si to chcel? mozes to akurat spravit presmerovanim v hlavicke, aby si user nic nevsimol..
problemy sa mi nezdaju byt problemami,
1, vzdy na zaciatku kontroluj pritomnost cookies, nastavil si uz nejaku hodnotu, tak jednoducho skontroluj ci existuje, ak nie tak presmerujes na zaciatok, kde sa cookies nastavuju
2, prvy bod ti vyriesi aj tento
nieco taketo, neskusal som to pisem len tak
cookies.php
Kód: if(isset($_GET['was_set'])) { echo isset($_COOKIE['test']) ? 'Cookies zapnute' : 'Cookies vypnute'; }else{ setcookie('test', 'povolene?', time() + 5); header('Location: http://domain-name.tld/cookies.php?was_set'); exit; }
_________________ Sorry za prelkepy |
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
Pouzivam buffering a s nim by to nemuselo pracovat za niektorych okolnosti ako ma ak spravne chapem ale mozem ho teda vypnut. zvykol som si to pouzivat a na taketo veci potom zabudam, dik za radu.
//edit:
Ma to jeden hacik ale. Ani toto nezisti, ci je zapnute cookie na 100%. Pretoze mam formular, cez ktory posielam data metodou post. Pokial ho klasicky pouzijem, nebude to fungovat pretoze pri refresnuti stranky (kvoli vkladani premennej "was_set" do pola GET) mi z pola POST data zmiznu. takze musim v action nastavit uz premennu "was_set" a tu je problem pretoze na stranke kde sa spracuvava formular uz sa preskoci funkcia setcookie.
samozrejme mozem nastavit time na vacsiu hodnotu a tym padom by mi to zobralo cookie este z predoslej stranky, v tom pripade moze ale uzivatel navstivit stranku s formularom, vypnut cookie a formular pouzit. Kazdopadne ta kontrola sa preskakuje na miestach, kde to najviac potrebujem - v scriptoch kde sa spracuvavaju formulare.
riesenim by bolo ak by som mohol refresnut stranku tak, ze nielen skopirujem adresu url danej stranky, ale aj celu hlavicku skopirujem a refresnem s nou. je nieco take mozne ? ak nie existuje este nejaky figel ako checkovat cookie tak aby to vyriesilo hore spominany problem ?
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
Môžeš ešte použiť .htaccess a zakázať prístup z iných adries ako sú tie tvoje...
resp. čo má to cookie za funkciu, že je tak nevyhnutné ho tam mať...
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
Citácia: Môžeš ešte použiť .htaccess a zakázať prístup z iných adries ako sú tie tvoje... Tomu som nepochopil. Ako mi moze pomost zakazovanie pristupu nejakych adries a pod. ? Citácia: resp. čo má to cookie za funkciu, že je tak nevyhnutné ho tam mať...
Mam ho vo vela roznych pripadoch ako alternativu identifikacie uzivatela. Nespolieham sa uplne na to, ze ho podla cookin a inych metod identifikujem, ale cim lepsie si vytvorim toto overovanie cookin, tym efektivnejsie (resp. s vacsou pravdepodobnostou) mozem uzivatela identifikovat. Samozrejme sessions, to vyuziva cookies tiez a ukladanie id relacie do URL pri vypnutych cookinach tomu sa vyhybam.
Da sa to nejak s preposielanim toho pola post ?
// Googlim ako sa len da, ale s php asi preposielat pole POST nemozem (fakt nechapem preco ziadna funkcia na posielanie POST v php nieje).
Tak asi budem musiet pri refresovani preniest data cez GET. Ale potrebujem ich zakryt, tak isto ako potrebujem zakryt to "was_set" takze na to by som uz mohol pouzit htaccess vsak ?
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
No tá kontrola čo ti napísal emer sa má vykonať len raz. Výsledok si uložíš na servery a v tom formulári testuješ len to či bola kontrola vykonaná, ešte pred jeho odoslaním, takže nepotrebuješ posielať nijaké hlavičky a strácať posty, ktoré si poslal. Ten .htaccess zabráni, aby sa k tomu formuláru dostal niekto z nežiadúcej adresy...
PS: ako sa vyhýbaš tomu, aby pri vypnutých cookies neposielal server SID v adrese?
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
no po prve emer ten priklad nepisal urcite na to, aby sa vykonal iba raz pretoze tam nastavil time()+5. po druhe aj tak ja ho iba raz vykonat nechcem, ved prave nato som zalozil tuto temu aby som to mal co najlepsie vytvorene a obmedzil to, ze niekto si vypne cookies pocas surfovania a ja ho budem uz potom detekovat ako niekoho kto ma zapnute cookiny. nechcem to len na kontrolu beznych userov ale chcem aj ztazit pracu tym, ktory sa snazia narobit neporiadok.
jednoducho chcem tu kontrolu vykonat pri kazdom nacitani stranky osobitne. prave sa nejak snazim vyspekulovat nieco na princip emerovho kodu tak, ze pri refresovani sa pole post bude prenasat cez get a premenne v get sa budu skryvat pomocou mod_rewrite v htaccess, to by malo ist nie ? este som nikdy nepouzival htaccess preto sa pytam.
htaccess na obmedzovanie ip adries nepotrebujem lebo na to uz mam php script.
//edit
Citácia: PS: ako sa vyhýbaš tomu, aby pri vypnutých cookies neposielal server SID v adrese?
jednoducho na niektore stranky vyzadujem zapnute cookiny a nepovolim uzivatelovy pristup pokial ich zapnute nema. je to pre mna idealne riesenie tak prosim nepiste ze to je zle po stranke dostupnosti.
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
Ja nechápem, čo tým vypnutím cookies vlastne ten "útočník" získa?
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Ak chceš pomocou GET preniesť nejaké údaje, tak ich (logicky), pomocou mod_rewrite nijako neschováš (pretože klient ich musí dostať, takže ich používateľ bude vidieť).
Presmerovanie POST by malo fungovať normálne (napr. pomocou toho mod_rewrite), každopádne ak tam potrebuješ cookies, tak jednoducho presmeruj používateľa na stránku s upozornením, že nemá povolené cookies, a tebe sa to nepáči. Používateľ sa na tú stránku bude musieť preklikať znovu a ak nezapne cookies, ty ho zase presmeruješ ...
PS: A netuším, ako má cookies zabrániť robeniu neporiadku (každý normálny bot, či niečo podobné, cookies podporuje).
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
nechapete co chcem. to pole GET nejde uzivatelovi. uzivatel odosle post, da zobrazit nejaku php stranku a ja ju presmerujem a to pole post musim dostat na tu presmerovanu, to chcem robit cez pole get tak aby to nevidel. nic nepotrebuje dostat uzivatel, len skrytu adresu.
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
A načo ti bude to posielanie toho postu. Veď ak ho už máš, tak ho snáď spracuješ, nie? Ten post nepošleš nijako. Také chytré formuláre(ktorým sa nestrácajú vyplnené polia) to robia tak, že všetky polia vyplnia pomocou toho postu, ktorý si už poslal.
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
1daemon1 píše: nechapete co chcem. to pole GET nejde uzivatelovi. uzivatel odosle post, da zobrazit nejaku php stranku a ja ju presmerujem a to pole post musim dostat na tu presmerovanu, to chcem robit cez pole get tak aby to nevidel. nic nepotrebuje dostat uzivatel, len skrytu adresu. Čo je zlé na tom, že používateľ odošle nejaký formulár pomocou POST a ty ho presmeruješ na inú stránku (ktorej prehliadač tie údaje znova pomocou POST odošle).
Ak tam chceš, medzi tým presmerovaním, niečo zobraziť, tak môžeš tie údaje uložiť do session a do url pridáš SID (a ak zistíš, že cookies funguje, pretože tam po tom presmerovaní úž cookies budeš mať, tak sid prenesieš do cookies a môžeš ho z url odstrániť).
A ak ide len o vyplnený formulár, tak urob to, čo píše camo.
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
Prepacte, asi vam nerozumiem. Ak sa vam nechce citat moj sloh tak si prosim precitajte (to podstatne) iba pod ciarou .
Citácia: Ja nechápem, čo tým vypnutím cookies vlastne ten "útočník" získa?
Uz nic, az teraz som si to uvedomil ze to co som chcel spravit bola uplna hlupost.
Ale to overovanie cookies teraz potrebujem k prihlasovaniu, aby ked identifikujem prihlaseneho usera cez session tak sa SID neukladalo do adresy.
Najprv vam vysvetlim preco chcem kontrolovat cookies na kazdej stranke osobitne (pouzit priklad ktory napisal emer) a nie tak, ze na jednej stranke cookie ulozim, na druhej skontrolujem. Ratajme s tym, ze dojde k jednemu z tychto pripadov:
1) user pride na stranku s prihlasovacim formularom (cookies sa ulozi), odide z nej ale za nejaky cas sa vrati uz s vypnutymi cookies a pouzije formular (popripade vypne cookies uz na mojej stranke)
2) user ma vypnute cookies, navstivi stranku s prihlasovacim formularom, zapne cookies a skusi sa prihlasit (toto je pravdepodobnejsie pretoze ak uz mal raz cookies vypnute a ja ho na to upozornim, moze otvorit formular, a az potom skusit to cookies zapnut)
pripad 1- Ak by som kontroloval iba ci moja cookina existuje, tak by v tomto pripade sa uzivatel prihlasil s vypnutymi cookinami a SID mal v adrese. pretoze cookina ktoru kontrolujem bola vytvorena este pred tym nez cookies vypol.
Aj kvoli 2. pripadu musim kontrolovat cookies na kazdej stranke osobitne, lebo pokial by som bral cookies z predoslej, vyhodnotil by som ho ze ma cookies vypnute a on by bol z toho zmateny.
______________________________________________
Ok takze kvoli tomuto chcem pouzivat na kazdej stranke refresh. Ale problem mam s tymto:
user vyplni prihl. formular a odosle, mne sa nacita stranka ktora formular spracuvava. ako prve sa spusti kontrola cookies - cize cookina sa ulozi, nasleduje refresh cez header( "Location: " $adresa ); a tu je ten problem. hned ako takto refresnem data z pola post sa mi v novo nacitanej stranke kde uz mozem pohodlne kontrolovat cookies, data z pola post neukazu. Pretoze to je nanovo nacitana stranka bez nejakeho odosielania POST-u. Ja som to skusal a mal som s tymto problem tak aspon dufam ze problem v skutocnosti nebol v niecom inom.
chrono mi uz dal v podstate riesenie, ale ma jeden malicky nedostatok:
stranka na ktorej sa spracuvava formular, pred tym nez pouzijem header location tak ulozim data z pola post do session a v novo refresnutej stranke ich zo session vyberiem. po refresi ale ostane v url SID na relacie dat z pola post. a to moze byt nepezpecne, aj ked je velmi mala pravdepodobnost ze niekomu takto uniknu data.
Prepacte za sloh a dufam ze som sa vyjadril zrozumitelne.
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
Citácia: ale ostane v url SID na relacie dat z pola post. a to moze byt nepezpecne
Myslím, že dosť dobre nechápeš v čom je to nebezpečenstvo. Ak ti niekto odpočúva pakety, tak sa na to môžeš vykašľať. Ani cookies ti nepomôžu. Musel by si použiť https, alebo ssl, čo by bolo riešenie, ak by si ten form posielal trebárs do banky. Cookies sú inak zraniteľné cez XSS.
No a v neposlednom rade header() neposiela SID, pri vypnutých cookies, čo ja považujem za dosť blbé... To vlastne znamená, že sa ku SESSION v ktorom máš uložené dáta, nedostaneš ak ho tam ručne nedoplníš...
Tak hurá do štúdia...
PS:Ešte si nevidel formulár, ktorý sa posiela userovi aj s vyplnenými dátami z predošlej stránky? ALE ČO AK ŤA NIEKTO SLEDUJE?
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 | 181 Bydlisko: Nitra / Bra... |
camo píše: Cookies sú inak zraniteľné cez XSS.
nastavis HTTPonly a si v suchu
nechce sa mi citat cele co ste pisali, lebo je toho dost. ale 1daemon1, t si ma trosku nepochopil...
ako ti pisal camo, tu kontrolu, ktoru som ti poslal vykonas iba raz. Potom uz vies, ze cookies ma povolene, nastavis mi potrebnu hodnotu. Zobrazi sa mu formular, ktory odosle.. Ked si tam vypne cookies, ty uz si mu niejake nastavoval, takze predtym ako srpacujes formular zistis, ci tebou nastavena hodnota existuje.. ak ano, znamena to ze cookies nevypol a mozes pokracovat.. ak ta hodnota neexistuje, znamena to, ze cookeis vypol, a teda formular nespracujes. kapiš? a takto to budes kontrolovat pri kazdej poziadavke
_________________ Sorry za prelkepy |
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
aha. tak potom je to jednoduche teda. ja som si myslel ze pokial niekto vypne cookies tak uz ulozene cookies pouzivat mozem ale nemozem ukladat nove. tak diki vam za rady.
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Keď ti ide o bezpečnosť, rozumnejšie by bolo obmedziť platnosť session a/alebo, občas zmeniť SID (v php je na to nejaká funkcia).
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
Pokial som spravne vygooglil tak je to session_regenerate_id.
a v dokumentaci pri tej funkci jeden uzivatel pisal ze je lepsie pouzit nieco taketo napriklad:
Citácia: In my code this function resulted in some Internet Explorer 8 browsers loosing their connection with the session. As mentioned above this is probably because the page reloads before the cookie is updated on the client side:
This is the only manual workaround that never produced this problem for me:
Kód: $old_session = $_SESSION; session_write_close(); session_id(sha1(mt_rand())); session_start(); $_SESSION = $old_session;
|
|
Stránka: 1 z 1
| [ Príspevkov: 18 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Operačné systémy Microsoft | 1 | 342 | 24.02.2013 18:04 S1m0n | | v Obchody, reklamácie a právo | 4 | 723 | 02.09.2009 22:05 cino | | v Operačné systémy Microsoft | 4 | 593 | 24.10.2007 15:24 aaggii | | v PHP, ASP | 8 | 1053 | 25.01.2009 19:26 elan111 | | v Sieťové a internetové programy | 6 | 852 | 13.01.2007 16:52 xificurC | | v JavaScript, VBScript, Ajax | 4 | 476 | 24.08.2013 21:59 shaggy | | v HTML, XHTML, XML, CSS | 10 | 852 | 12.03.2008 16:21 jablko05 | | v HTML, XHTML, XML, CSS | 7 | 792 | 06.01.2008 15:24 Matho | | v PHP, ASP | 2 | 403 | 10.01.2012 7:59 mitko | | v PHP, ASP | 5 | 476 | 02.05.2010 17:15 pizet | | v PHP, ASP | 5 | 435 | 09.12.2011 16:04 emer | | v Sieťové a internetové programy | 2 | 552 | 24.10.2008 20:37 walther | | v Sieťové a internetové programy | 3 | 443 | 29.04.2011 18:54 tairikuokami | | v PHP, ASP | 15 | 856 | 24.08.2011 11:59 chrono | | v PHP, ASP | 13 | 666 | 01.06.2009 15:18 walther | | v Sieťové a internetové programy | 0 | 318 | 06.08.2011 16:56 archer89 |
|