PHP ile giriş kimlik bilgilerini sunucu tarafı tutmak (güvenli)

2 Cevap php

Yani uzaktan SOAP sunucu için kendi oturum açma bilgilerini geçmek için kullanıcı gerektiren bir php soap istemci yazmaya çalışıyorum. İşte set-up/dilemma olduğunu:

  • Kullanıcı yerel kimlik bilgilerini kullanarak yerel sitenin içine kaydeder ve SOAP istemci ile sayfaya gider.
  • Kullanıcı şimdi POST formuyla arada, yerel sitede (9 kez 10 üzerinden) içine almak için kullanılan olanlar aynıdır, uzaktan Sabun sunucu için kimlik bilgileri, istenir.
  • İstemci SOAP isteği ile birlikte SOAP başlığında kimlik geçer, istemci SOAP sunucu yanıt verir.
  • Komut kullanıcı çıkış verileri görür, biter.

Şimdi kullanıcı orijinal çıktı ile ilgili verilerin diğer bazı bit istiyor. Problem $ _POST değişkeni uzun gitmiş olmasıdır. Kullanıcı bir sonraki isteği ile birlikte kimlik bilgileri içermelidir. Kullanıcı, başka bir yöntemle veri aramak için daha kolay karar verir ve serin SOAP istemci vazgeçer kadar tekrarlayın.

Web barındırma hizmeti sunucusu, bir web istemcisi üzerinden doğrudan erişilebilir ve kimlik bir çerez aracılığıyla korunur. Sunucu WDSL üzerinden sorgulandığında Ancak, herhangi bir kurabiye ya da diğer tarayıcı tarafı oturumuna aramaz; sadece soap isteği başlığındaki kimlik bilgilerini içerdiğini denetler.

Yani bu sorunun iki sürümü vardır:

Yerel oturum kimlik böylece bir aşağı oturumları tutarak, soap isteği geçirilen almak için 1) bir yolu var mı? (Hatta yerel tarafta kimlik doğrulama yöntemi üzerinde hiçbir kontrole sahip, farkında olun. Bu hiçbir yargı üzerinde sahip bölümlerin onlarca kapsayan, sistem boyunca her türlü ve her kullanıcı için kimlik doğrulaması denetleyen bir ev yetiştirilen Apache mod tarafından işlenir. Ben Global Değişkenler ile baktı ve kimlik bilgilerinin hiçbir ipucu görmek, ama sadece) PHP / Apache bazı temel güvenlik özellikleri hakkında aptal olabilir var.

2) Bu kimlik zaman bazı miktar (diyelim ki, 30 dakikalık bir oturum için kullanılabilir böylece PHP ikincil giriş yaptıktan sonra kimlik bilgilerini işlemek için güvenli bir yolu var mı?). Ilk noktaya dayalı, bu kimlik bilgileri çok gizli, bunun (vb, ya da onları görmek için bazı DB içine almak) orada birisi etrafında kurcalamak için basit bir yolu olabilir ve bu kimlik bilgilerini dışarı yankı almak gerektiğini aklınızda tutun

Bu paranoyak olduysa üzgünüm. Ben basit ötesinde güvenlik kimlik taşıma için kullanılan değilim "Şifrenizin koymak yerdir ... İyi, şimdi herkes seansın geri kalanı için birbirini bilir, ben yararlı şeyler çıktısı geri alabilirsiniz."

Herhangi bir temel güvenlik özellikleri için bile bir bağlantı yararlı bir başlangıç ​​olacaktır.

2 Cevap

Kendi son oturumu oluşturun. Bir veritabanı tablo oluşturun:

CREATE TABLE session (
    ID int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
    Hash binary(16) NOT NULL,
    User int unsigned NOT NULL,
    Created timestamp 
);

Kullanıcı ilk defa doğrular zaman, oturum oluşturmak ve Hash altıgen formu.

Sonraki aramalar kullanıcı adı ve şifre, sadece karma gerekmez. Sonra, diyelim ki, hareketsizlik 5 dakika, Hash silinir. Kullanıcı adı ve parola hash sonra kimlik olarak kullanılan, sadece bir kez geçti ve olmayan kullanımı bir süre sonra sona erer edilir.

Neden bir çerez kendiniz ayarlayabilirsiniz kalmamasıdır ilk sabun isteği sonra içinde kullanıcı adı / şifre vardır? Sadece bir kez sormak sonra bir tanımlama saklayın. Daha sonra bir süre yola ve Muhtemelen Oturum kapatmada çerezi silmek istediğiniz içeri kullanıcı oturum açmış durumdayken sorgulayabilirsiniz.

Çerez sabun kullanıcıyı içerecek / sadece geçiş. Bu şekilde kimse sunucuda alay ve diğerleri kimlik bulma konusunda endişelenmenize gerek olmazdı. Bu etkin yine açık metin olarak gönderilir beri bunu her zaman giren kullanıcıya sahip olarak aynı şeyi yapar. Bir geri dönüşümlü karma veya basit 2 yollu şifreleme ile çerez adınızı ve şifrenizi allak bullak olabilir.