JavaScript kullanarak bir HttpOnly tanımlama bilgisi nasıl okunur


94

JavaScript ile güvenli bir çerez okumanın bir yolu var mı?
Bunu kullanarak yapmaya çalıştım document.cookieve bu makalede güvenli tanımlama bilgileri ve HttpOnly bayrağıyla ilgili görebildiğim kadarıyla, bu şekilde güvenli bir tanımlama bilgisine erişemiyorum.

Herhangi biri bir geçici çözüm önerebilir mi?


1
Gönderen wiki : Bir tarayıcı HTTPS üzerinden bir sunucu ziyaret edildiğinde Güvenli bir çerez sadece kullanılır.
Pavel Hodek

6
@Pavel Hodek Bu yanlış bayrak. "Güvenli" tanımlama bilgisi bayrağının HTTPOnly güvenlik bayrağıyla ilgisi yoktur. Korkunç bir isimlendirme sistemleri var.
kale

1
Bu soruların başlığı "HttpOnly" bayrağını içerecek şekilde değiştirilmelidir. Görünüşe göre soru "Güvenli" bayrağıyla ilgili.
Tom

Yanıtlar:


130

HTTPOnly bayrağı ayarlandığında , farklı Tarayıcılar farklı güvenlik önlemlerini etkinleştirir . Örneğin Opera ve Safari, javascript'in çereze yazmasını engellemez. Ancak, tüm büyük tarayıcıların en son sürümlerinde okumak her zaman yasaktır.

Ama daha önemlisi, neden bir HTTPOnlyçerez okumak istiyorsunuz ? Bir geliştiriciyseniz, bayrağı devre dışı bırakın ve kodunuzu xss için test ettiğinizden emin olun. Mümkünse bu bayrağı devre dışı bırakmaktan kaçınmanızı tavsiye ederim. HTTPOnlyBayrak ve "güvenli bayrak" her zaman set olmalıdır (çerez zorlar üzerinden https gönderilmek üzere).

Eğer bir saldırgansanız , o zaman bir oturumu ele geçirmek istersiniz . Ancak HTTPOnlybayrağa rağmen bir oturumu ele geçirmenin kolay bir yolu var . Oturum kimliğini bilmeden oturuma devam edebilirsiniz. MySpace Samy solucanı tam da bunu yaptı. Bir CSRF belirtecini okumak ve ardından yetkili bir görevi gerçekleştirmek için bir XHR kullandı . Bu nedenle, saldırgan, oturum açan kullanıcının yapabileceği neredeyse her şeyi yapabilir.

İnsanlar HTTPOnlybayrağa çok fazla güveniyorlar , XSS yine de sömürülebilir. Hassas özelliklerin etrafına engeller koymalısınız. Dosyalanan şifre değişikliği gibi mevcut şifreyi gerektirmelidir. Bir yöneticinin yeni bir hesap oluşturma yeteneği , bir XHR ile kolayca atlanamayan bir CSRF önleme tekniği olan bir captcha gerektirmelidir .


Solucan olayını biraz daha açar mısınız? Bu bağlantı çalışmıyor ve internetten de pek anlamadı. Teşekkür ederim.
Abhishek Jebaraj

@Abhishek Jebaraj Eğer sammy solucanını veya CSRF jetonlarını anlamıyorsanız, o zaman önce aynı kökenli politikanın
kale

yalnızca http çerezinin son kullanma tarihini öğrenmek istiyorum, bunu nasıl yaparım
PirateApp

50

HttpOnly tanımlama bilgilerinin tüm amacı, JavaScript ile erişilememeleridir.

Komut dosyanızın bunları okumasının tek yolu (tarayıcı hatalarını kullanmak dışında), sunucuda çerez değerini okuyacak ve yanıt içeriğinin bir parçası olarak onu geri yansıtacak işbirliği yapan bir komut dosyasına sahip olmaktır. Ama bunu yapabilir ve yapacaksanız, neden ilk başta HttpOnly çerezlerini kullanasınız?


Kullanıcının sitenizi belirli bir tarayıcıdan kullanmasına izin vermeden önce, kullanıcı tarayıcısının HttpOnly tanımlama bilgilerini doğru bir şekilde işleyip işlemediğini test etmek isteyebilirsiniz. HttpOnly bayrağının tarayıcı desteğini garanti edebilecek bir örnek arıyorum. MS ayrıca bunu yapmayı tavsiye ediyor, ancak bunun nasıl yapılacağına dair başka bir tavsiye yok:
XSS'yi HttpOnly

Tarayıcı sürümü beyaz listeyi tavsiye ettiklerini buldum. Yanılıyor olabilirim, ancak bunun yerine javascript'ten desteği kontrol etmenin uygun bir yolu olmaz mı? Bununla ilgili herhangi bir drawbak önerebilir misiniz?
Ursegor

0

Httponly tanımlama bilgilerinin amacı komut dosyası tarafından erişilemez, bu yüzden YAPAMAZSINIZ.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.