Nasıl sunucular arasında bir kullanıcı oturumunu kimlik doğrulaması yapabilir?

3 Cevap php

Problem: A download link should be displayed in a user's home page. That download link should ONLY be accessible if the user logged in.

Ama asıl sorun, kullanıcının ana sayfa ve indirme bağlantısı ayrı web sunucuları üzerinde olmasıdır.

Ben download linki ile bir belirteç göndermek ve orada doğrulamak bir yolu var mı?

3 Cevap

users server = serverA.com
your server  = serverB.org

i doğru anlamak, sorun kullanıcı sadece değil, sunucu B, sunucu A kaydedilir ve oturum durumunu (örneğin, bir veritabanı üzerinde oturum yönetimi) paylaşmak için hiçbir yolu yoktur ki, değil mi?

Başımın üstünden, ben bir seçeneği düşünebilirsiniz:

server B simply asks server A
means: link on serverA contains the users session id*. serverB then asks server A if the session is valid.

Eğer bu iki sunucu arasında iletişim olmadan bunu yapamaz.

* Not: yerine session-id rasgele bir belirteç kullanmak için daha iyi olurdu. oturum kimlikleri özel olmamalıdır.

Bu url paylaşmak için kullanıcıların durmayacak, bu yüzden başkasının dosyayı indirmek istiyorsanız, onlar sadece etrafında url iletebilirsiniz. Öte yandan, kötü niyetli bir kullanıcı aynı zamanda onun oturum kimliği ile bu yapabilirdi.

Sen download bağlantı hedef sunucuya kullanıcı bilgileri ile bir formu göndermek yapabilir. Giriş bilgi yüzden belki de bu Dilerseniz yol gitmek değil, gizli form alanları için değerler olarak sayfanın kaynağında görünür, çünkü bunu yaparken güvenlik etkileri vardır.

İkinci bir seçenek, bir veritabanında oturum bilgi depolamak için, ve sonra sadece yeni bir sunucuya oturum anahtarını geçerdi. Bu ikinci sunucu ilk sunucunun veritabanı başvurun ve üzerinde bir sorgu çalıştırmak mümkün gerektirir. Okuma erişimi için bu sunucudan giriş izinlerine sahip bir kullanıcı adı kurma birçok güvenlik delik açmadan bunu yapmak için yeterli olmalıdır.

Son olarak, kullanıcının statüsünde giriş doğrulayarak, bir kullanıcı adı verildiğinde bir evet / hayır cevabı dönecekti ilk sunucuya bir web servisi kurmak olabilir. Ikinci sunucuda alıcı bağlantı sonra kullanıcı adı almak ve tepkisini bina önce durumu Günlüklü doğrulamak olacaktır.

Kullanıcı bağlantısını tıklarsa, onun sunucudan sunucuya gidiyor.

O sunucu üzerinde kaydedilir ve eğer, o zaman o sunucu üzerindeki dosyaya erişmek için çalışıyor çünkü size ihtiyacınız denetler ne yapabilirim. Bağlantı bazı diğer sunucu görüntülenir bile.

Yani yapman kullanıcı tutmak için oturumları kullanıyorsanız, bu session_start() ile oturumu başlatmak ve kullanıcı, o zaten oturumda açmış almalısınız indirme kodu kadar fazla olmalıdır.