Web Session veya Oturumsuz

9 Cevap php

Ben içeren bir 'oturum' tablo oluşturarak düşünüyordum rastgele #, Kullanıcı kimliği, bir kullanıcı günlükleri ve rastgele # benzersiz kişiyi tanımlamak için her görüntülenen sayfanın kullanıldığında doldurulur Tarih / Saat. Ben yenkimliken oturum açma zorlama planı daha geçmiş x saat etkinlik yok olmuşsa kullanıcı bir sayfa görüntüler her zaman kayıt, en son tarih / saat aktivite ile güncellenecektir. Soru çift:

  • Ben IP (I multi-oturumları hakkında endişeli değilim, ama güvenlik için bunu düşündüm) içermelkimlikir
  • daha iyi bu işi yapar ve (çerezler, vb) stveart PHP oturum yaklaşımı daha güvenli
  • Ben emin olmak için iki maç php oturumda (çerez) yanı sıra bu yöntemi kullanmalısınız onun doğru kişi (IP, vb? dahil çerez)

Daha iyi bir yaklaşım ya da orada olduğunu (ve ben bilmiyorum) stveart güvenlik desen var mı?

9 Cevap

Sizin yöntem benim için çerezleri çarpıcı benzer sesler. Sen bir yerde bir değer ayarlamak sonra her sayfa yük üzerinde kontrol. Ben kurabiye / oturumları mükemmel yeterli zaman tekerleği yeniden icat etmek bir ihtiyaç görmüyorum.

Genel olarak ben (onlar tarayıcıyı kapatmak ve geri gelmek ne zaman yani) sonra kullanıcıların kalmak oturumları arasında kaydedilir çünkü çerezleri kullanmayı tercih.

IP'leri kullanmak etmeyin. Çoğu insan için çalışacak olsa da, bazı dinamik IP olabilir. Bir ziyaretçi, örneğin onun ISS yükü dengeli vekil çiftlikte arkasında olabilir.

Nokta 1 - kişi statik IP ait olup olmadığını bağlıdır

Nokta 2 - veritabanında saklanması oturumları yük dengeleme ve yedekli sorunları için gerekli olacaktır. Ayrıca, uygulama nasıl olacak meşgul bağlıdır.

Nokta 3 - Bir veya diğer yeterli olmalıdır.

  1. IP yararlı olabilir, ama dinamik bir IP sahip olan birisi durumunda, bir referans noktasından daha fazla bir şey için tavsiye edilmez.

  2. Ben sunucu yöneticisi tarafından değiştirilmediği sürece, tipik bir 20 dakikalık bir zaman aşımı olduğu için bir oturum yaklaşım kullanarak öneririm.

Why not just using the default PHP session and storing it's datas in a database ?
There are several functions allowing you to redefine what PHP does when the session is accessed or updated.

This article açıklar.

Ben sadece tek bir yöntemi seçme ve düzgün çalışır sağlanması öneririm. Birden doğrulamaları olması güzel geliyor ama genellikle sadece herhangi bir ekstra özellikler ekleyerek olmadan karmaşıklığı ve hataları ekler.

Az havai beri oturumlarda değerleri saklamak ve istediğiniz zaman sona erecek oturumu ayarlayabilirsiniz. Bu aşırı hesaplamalar olmadan tüm "Onlar şey son giriş zamanı" çözer.

Bir oturumun tüm amacı aradığınız tam olarak ne olduğunu bilgisayarda bu kişi ile ilgili değerlerini depolamak için. Bu çoğaltma gereksiz görünüyor.

Neden parça oturumları için veritabanı kullanmak gerekiyor. Eğer onun bir yük değil mi? Ben PHP oturumları ile devam öneririm.

Ben CodeIgniter kullanıyorum - Ben arıyordum herşey .... çerçeveler çalışmak - onlar (bir diğer denetleme) tanımlama ve veritabanı hem de kullanmak gibi görünüyor oturumu işleyici yerleşik olması

Cevap Hem!

The main point: You should never blindly accept cookies or sessions to validate users, both of which are easily stolen by XSS, and can be used by a malicious user other than the origin.

For user validation, since you're making a trip to validate the user anyway, there isn't really an overhead. You are simply applying a value to when they logged in to the database, and validating it via some means on each page load.

A method I chose was a checkin-checkout method of the user's session state. In which a unique ID is created on page load and a session variable stores this unique ID. This unique ID is also stored for the User ID in the database, along with IP Address and IP changes. (I also stored other bits of info that are validated)

This can be used to prevent 2 separate browsers from being logged in at the same time for a single User ID, which can't be done with just sessions since sessions don't care who created them or when. But with checkin-checkout, since the Unique ID is always different, a mismatch would occur.

The script validates the Unique ID from the session value and IP Address in the database. Once a match is made, change the Unique ID and update the database. If the IP was changed within x seconds, do something for that user (Force new login), if the Unique ID's don't match do something else (such as logout, warn, etc), if last activity was x seconds ago do something for that user.

Yani Login-> Create Session / Kullanıcı Veritabanı Benzersiz Kimlik + Validate User-> Üret Yeni Oturum Benzersiz Kimlik-> Güncelleme Kullanıcı Son On / Benzersiz ID ile Doğrulama-> Sonraki Sayfa-> Validate Session

Sonunda size, kullanıcıların kendi hesaplarına erişim ve ne sıklıkta her noktadan nerede daha iyi bir bakış verebilir EG:. Çalışma x 3, x 5 ev, mobil x 1 Ve ayrıca hesabınızdan kullanıcıları korumak için izin verebilir hırsızlık. EG: Bir Alman kullanıcı aniden Tayland günlükleri, ya da ABD. Değişim onları bilgilendirmek ve e-posta değişikliğini doğrulamak için bir istek gönderin.