Cookie oturum id şifrelemek nasıl?

7 Cevap php

Ben oturum kaçırma makaleleri hakkında okurken, ben bir tanımlama içinde saklanan oturum id değerini şifrelemek için güzel olacağını öğrendim.

Bildiğim kadarıyla, ben session_start(), PHP bir tanımlama oturum id değerini değil şifrelemek arayarak bir oturumu başlattığınızda.

Nasıl onunla oturumu başlatmak sonra session id değerini şifrelemek ve do?

7 Cevap

Şifreleme yardımcı olmayacaktır. Oturum çerezi zaten sadece sihirli bir sayıdır. Şifreleyerek sadece kaçırmak için farklı bir sihirli numara var demektir. Aklınızda ne varsa kaçırma senaryoları bağlı olarak, diğer olası azaltıcı vardır. Örneğin, tek bir IP oturumları sınırlayabilir. Yani mesela, olsa da bazı sorunlar teşkil insanlar kablosuz noktaları arasında geçiş.

Bu gerçek bir tehlike başka bir kullanıcının oturum kimliği ellerine alma biri olduğu gibi oturum kimlikleri, (birisi başka bir kişinin tahmin etmek, oturum kimliği kullanamazsınız olduğunu) rastgele olması daha önemli. Sürece gerçekten rastgele onları tutmak gibi, hayır sebep veya yardımcı şifreleyerek de var

Lütfen oturum tanımlama GUID'sidir varsayarsak, şifreleyerek hiçbir nokta yoktur. Bu sadece başka bir sözde-rasgele bir dize yerini alacak.

Ne yazık oturum kimliği saldırgan sadece (zaten onlara görünür tek şey) şifreli formu kullanabilirsiniz gibi, çok güvenliğini artırmak için gitmiyor şifreleniyor.

Bu önleyebilecek tek şey birisi PHP bu oturumu oluşturmak için neden olacak bu? PHPSESSID = foo ile bir bağlantı göndermek hiledir. Şifreleme ve doğrulama kullanarak bunu önleyebilirsiniz, ancak yerine tamamen URL oturum kimliği transferi kapatmak gerekir.

Her zaman (kaydedilir) kullanıcı (lar) doğrulamak için sadece tek cookie veya öğe bağlıdır asla iyi bir fikirdir. Yukarıda belirtildiği gibi, aynı zamanda IP saklamak ve bu ile kontrol etmek iyi bir fikirdir. Iyi bir ek User_Agent saklamak olacaktır.

Uygulama açık kaynaklı ise, korsan kolayca size karşı doğrulamak konum ne olduğunu belirlemek, çünkü yalnız bir oturum kimliği ile olduğu gibi iyi olduğunuzu akılda çıplak.

Sonra çerezleri kontrol, bu script yapmak bir web tarayıcısından erişebilirsiniz.

<?php
  session_start();
?>

Büyük olasılıkla böyle bir şey göreceksiniz

Site         Cookie      Value
mysite.com   PHPSESSID   6fktilab3hldc5277r94qh2204

PHP iyi bir iş, güzel, benzersiz bir kimliği üreten eğer yapar. Nokta, bu şifreleme Orada değil.

Oturum kimliği nispeten tahmin edilemeyen, yani bu gerçekten sorun değil.

Eğer saldırıları ortadan kaldırmak için bu ile ilgili yapabileceğiniz bir şey vardır:

  • create a new oturum when a user signs in
  • limit the length of a oturum

Epeyce başka şeyler de vardır. Ben her zaman bu konularda Rails Guide okuyan tavsiye - PHP kodu hepsi eşit derecede uygulanabilir - Bilindiği sorunlar ve karşı önlemlerin çok erişilebilir bir açıklama sunmaktadır.