Problém s AddProtection a Internet Explorerem

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Klokan
Člen | 47
+
0
-

Ahojte,
mám v logovacím formuláři přidáno addProtection. Všude to bez problémů funguje, ale teď jsem to zkusil na IE6 i 8, a v obou mi to hlásí že „vypršela doba platnosti“ a nedostanu se přes to. Zkoušel jsem různá nastavení, ale neodstraním to. Pokud to vyhodím, tak mi po pár kliknutích vyprší session a chce to po mě nové přihlášení. Ale dělá to jen IE a zkoušel jsem to na třech různých serverech a všude stejné. Nesetkal jste se s tím někdo ?

jardo
Člen | 17
+
0
-

Klokan napsal(a):

Ahojte,
mám v logovacím formuláři přidáno addProtection. Všude to bez problémů funguje, ale teď jsem to zkusil na IE6 i 8, a v obou mi to hlásí že „vypršela doba platnosti“ a nedostanu se přes to. Zkoušel jsem různá nastavení, ale neodstraním to. Pokud to vyhodím, tak mi po pár kliknutích vyprší session a chce to po mě nové přihlášení. Ale dělá to jen IE a zkoušel jsem to na třech různých serverech a všude stejné. Nesetkal jste se s tím někdo ?

Ahoj

Ja mám na jednom webe problém ten, že mi pri každom pokuse o prihlásenie (cez formulár s AddProtection) píše „Security token did not match. Possible CSRF attack.“. Na inom projekte mi to nerobí. Rozdiel vidím vo verzii Nette, skús upgrade na poslednú verziu.

Klokan
Člen | 47
+
0
-

Jo jo, to je ten samy problem. Googlil jsem a pisou, ze je to problem spravy cookies v IE. Vsude je spousta rad, ale vicemene to znamena experimentovat s nastavenim az to konecne zacne fungovat. Zkusim jeste hledat, treba neco najdu a dam vedet.

JakubKohout
Člen | 92
+
0
-

Dnes jsem si pustil web na IE8 a baf ho, taky mi to všude vyhazovalo tuhle chybu. Takže bych to viděl na úpravu nette, protože úprava klienta není možná …

Patrik Votoček
Člen | 2221
+
0
-

minimalistic code?

Klokan
Člen | 47
+
0
-

Hlasilo mi to i na IE6. Myslel jsem, ze nikdo takovy problem nema ze se o tom nikde nepise. Uz se hrabu druhy den v Googlu, ale nic mi zatim nepomohlo. Ani nejnovejsi verze Nette. Muzete to nekdo prosim zkusit, kdo ma funkcni web s autentizaci a ochranou proti CSRF ?

David Grudl
Nette Core | 8228
+
0
-

Podařilo se někomu zjistit, v čem je zakopaný pes?

JakubKohout
Člen | 92
+
0
-

Ano problém je v tom že IE8 posílá ajaxovejma dotazama podivný hlavičky.
Řešení je jednoduché v /nette/web/session.php metoda generateVerificationKey jsem vypnul kontrolu všech hlaviček (encoding, charset, user-agent, language). Neni to nejbezpečnější riziko ale tak nějak nebyl čas zjišťovat která to dělá.

A mimochodem je rozdíl mezi IE8 na XP a na Win7. Chovájí se malinko odlišně co se týče posílanejch hlaviček.

David Grudl
Nette Core | 8228
+
0
-

Ty problematické hlavičky jsem se snažil řešit, nevíš o nějakých dalších, které je třeba obejít?

Klokan
Člen | 47
+
0
-

Zkoušel jsem zakomentovávat jednotlivé hlavičky a došel jsem k tomu, že to dělá hlavička Accept-Language.
Test proběhl na IE6.0.
Zítra se podívám na IE8.

<?php
		$httpRequest = $this->getHttpRequest();
		$key[] = $httpRequest->getHeader('Accept-Charset');
		$key[] = $httpRequest->getHeader('Accept-Encoding');
//		$key[] = $httpRequest->getHeader('Accept-Language');   // Tohle je ten problem
		$key[] = $httpRequest->getHeader('User-Agent');
                if (strpos($key[2], 'MSIE 8.0')) { // IE 8 AJAX bug
                   $key[1] = substr($key[1], 0, 2);
                }
/*
		if (strpos($key[3], 'MSIE 8.0')) { // IE 8 AJAX bug
			$key[2] = substr($key[2], 0, 2);
		}
*/
?>
David Grudl
Nette Core | 8228
+
0
-

On se snaží Accept-Language oříznout v případě MSIE 8. Že se stejná chyba objevuje i v IE6 je překvapení.

fenix
Člen | 16
+
0
-

Prave resime nejspis stejny problem. Po prihlaseni uzivatele neprojde isAuthenticated() respektive isInRole();
Bohuzel zadne ze zminovanych reseni nepomohlo.
Zajimave je ze se to stalo jen na jednom pocitaci, kde je win7 a ie8.
Problem se vyresil, kdyz se zrusilo $this->getSession()->regenerateId(); v User.php.
Predpokladam, ale ze se jedna o bezpecnostni prvek. Co se tyce techto veci, tak hluboko me znalosti nesahaji.
Otazka je, co ted s tim.

MzK
Člen | 127
+
0
-

Googlil jsem a mám asi stejný problém…
Bude to něco s cookies a sessions a ie a hosting?
Přihlašování mi funguje v Opeře, firefoxu a na localhostu i na internet exploreru..
Ale na hostingu mi přihlašování funguje v opeře i firefoxu.. Ale na internet exploreru neprojde toto:

<?php
$user = environment::getUser();
	if (!$user->isAuthenticated()) { // pokud prihlaseni expirovalo
}
?>

takže mne to hned po přihlášení odhlásí… Jenom v internet exploreru..
Nastaveno mám toto:

<?php
//bootstrap
$session = Environment::getSession();
$session->setSavePath(TEMP_DIR.'/sessions');
$session->setExpiration("+ 15 days");

//userModel.php
if ($sql) { // prihlaseni OK.
	$identity = new Identity('affilater');
	$identity->affil_id = $sql['affil'];
	return $identity;
}

// userPresenter
public function renderAdmin() {
$user = environment::getUser();
if (!$user->isAuthenticated()) { // pokud prihlaseni expirovalo
	$this->flashMessage('Odhlášen pro dlouhou neaktivitu.');
	$this->redirect('affilate:');
}
?>
Felix
Nette Core | 1245
+
0
-

Zvlastni je, ze na localhostu mi addProcetion() funguje, ale na ostrem serveru PHP 5.3.2 mi to nefunguje. A hlasi to Server Error 500. Uz nekdo prisel na ten problem?

v6ak
Člen | 206
+
0
-

Logy napoví více.