PHP apps
adresimdeki çerezleri HttpOnly cookies
olarak nasıl ayarlayabilirim? Burada IliaHttpOnly çerezlerini PHP'de nasıl kurarsınız
cevap
- yılında, bu cevaba bakınız. (varsayılan olarak
PHPSESSID
,)
PHP'nin kendi oturum tanımlama için
@richie's answer
setcookie()
ve setrawcookie()
fonksiyonları, bu güzel hale geri PHP 5.2.0 karanlık çağlarda, httponly
parametreyi tanıtıldı Ve kolay. Basitçe varsayılan olarak kalmasını isteyen parametreler için NULL
girin kısalık
setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly)
setrawcookie($name, $value, $expire, $path, $domain, $secure, $httponly)
için basitleştirilmiş Fonksiyon sözdizimi
sözdizimi gereği, true 7 parametresini ayarlayın. secure
parametresini ayarlamanız gerekip gerekmediğini de göz önünde bulundurmak isteyebilirsiniz.
O yaşlı, alt düzey header()
işlevini kullanarak da mümkündür:
header("Set-Cookie: name=value; httpOnly");
Açıklama ... 5.2 sadece o maddede belirtildiği gibi
httpOnly cookie flag support in PHP 5.2
bile,header("Set-Cookie: hidden=value; httpOnly");
<?php
//None HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE);
//HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
?>
PHP önceki sürümlerinde başlığını kendiniz ayarlayabilirsiniz Source
Belirtebilirsiniz o set çerez fonksiyonu çerezlerinizle için see the php manual
setcookie('Foo','Bar',0,'/', 'www.sample.com' , FALSE, TRUE);
HttpOnly siteler arası komut dosyası durmaz unutmayın; bunun yerine, olası bir saldırıyı etkisiz hale getirir ve şu anda bunu yalnızca IE'de yapar (FireFox, XmlHttpRequest'te HttpOnly çerezlerini açığa çıkarır ve Safari bunu onurlandırmaz). Her halükarda, HttpOnly'yi açın, ancak bunun için bir saatlik çıkış filtreleme ve fuzz testini bile düşürmeyin.
ile '$ cookie-> setHttpOnly (true);' Bu durumu şu anda '08'den beri değişmiş olabilir. Burada daha güncel/güncel bir liste var: http://stackoverflow.com/questions/528405/which-browsers-do-support-httponly-cookies – Kzqai
Gerçekten de düşürümümü kaldırmak istiyorum. –
PHP oturum çerezlerinin varsayılan olarak httponly
kullanmayın.
$sess_name = session_name();
if (session_start()) {
setcookie($sess_name, session_id(), null, '/', null, null, true);
}
burada notun öğelerin bir çift: Sen session_start()
session_name()
aramak zorunda
- Bu aynı zamanda varsayılan yolunu ayarlar '/ ' ' un Opera için gerekli olduğu, ancak PHP oturum çerezlerinin varsayılan olarak da.
http://php.net/manual/en/function.session-set-cookie-params.php Özel kodlama yerine yukarıdaki PHP işleviyle otomatik olarak yapılabilir. – Ryaner
:
Apache yapılandırmanıza bu ekleyebilir veya
<IfModule php5_module>
php_flag session.cookie_httponly on
</IfModule>
Bu .htaccess
da sürece session_start()
önce denir, bir komut dosyası içinde ayarlanabilir.
ini_set('session.cookie_httponly', 1);
+1 bu, sunucunuzun tamamında yer almak için iyi bir şeydir (güvenlik için) ancak bunun yerine php.ini'ye eklenmiştir. –
Lütfen php_flag'ın yerine kullanılması gerektiğini unutmayın: "Boole değerlerini ayarlamak için php_value kullanmayın. Bunun yerine php_flag kullanılmalıdır." http://php.net/manual/en/configuration.changes.php –
@OndrejMachulda "php_value" ifadesinin php_flag işlevinin değiştirilmesi işe yaramıyor. Sadece sunucumda denedim .. – Nate
Bunu bir başlık dosyasında kullanabilirsiniz.
// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);
Bu şekilde, gelecekteki tüm tanımlama bilgileri httponly'yi kullanır.
Sadece FYI session.use_only_cookies varsayılan olarak PHP> 5.3 –
'da açık ve "tüm gelecekteki ** oturumları ** çerezleri" http: – qdev
php_flag komutunun doğru sözdizimi burada
php_flag session.cookie_httponly On
Ve olmak farkında, sadece ilk cevap sunucusundan ayarlanmış çerez gelen ve bir (Sen "HttpOnly" yönergesini görebilirsiniz örneğin. Test çerezleri silmek için Yani Her test isteğinden sonra tarayıcıdan
http://stackoverflow.com/questions/528405/which-browsers-do-support-httponly-cookies Tarayıcı destek bilgisi var – Kzqai
@Tchalvak Hayır, mevcut cevaplar hala yetkili PHP'den HTTP-only cookie ayarı ile ilgili olarak 2008'den beri hiçbir şey değişmedi. _Which tarayıcıları sadece HTTP için çerezleri destekliyor. Soru, farklı bir cevapla. – lanzz
https://github.com/delight-im/PHP-Cookie – caw