PHP Server Side Mesaj Recreate Güvenli Tek Oturum On değiştirin

1 Cevap php

Ben dışarıda web siteleri için host ve intranet ve yöneticisi birkaç Single Sign Ons. Biz her zaman gizli form çeşit ile bu yapmış.

Example

<form method="post" action="example.php">
<input type="hidden" value="user" name="user" />  
<input type="hidden" value="password" name="password" />
</form>

Biz sonra bir javascript olay kullanıcı sahne arkasında gizli formu ve giriş olabilir.

Ancak, zaten bizim siteye doğrulanmış bir daha sofistike kullanıcı, kaynağını görüntüleyebilir ve kullanıcı adı ve parola görüntülemek olabilir.

Ben sorunsuz bir şekilde onları harici siteye giriş için bir PHP komut yayınlanan bilgilerin olmasını tercih ederim.

Ben web üzerinde çok araştırma yapmış ve insanların çalışmak için görünmüyor uygulamak kod birkaç tutarlı hatları ile geldi.

Genellikle aşağıdaki koda benzer:

 $ch = curl_init($POSTURL);
 curl_setopt($ch, CURLOPT_POST      ,1);
 curl_setopt($ch, CURLOPT_POSTFIELDS,POSTVARS);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION  ,1);
 curl_setopt($ch, CURLOPT_HEADER      ,0);  // DO NOT RETURN HTTP HEADERS
 curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);  // RETURN THE CONTENTS OF THE CALL
 $Rec_Data = curl_exec($ch);
 curl_close($ch);

Ancak, kimlik doğrulama çalışmak için görünmüyor. Ben curl_exec tarafından döndürülen ne yazdırmayı denerseniz, ben herhangi bir başarı yok. Ben de bu bile bu konuda gitmek için doğru yolu olurdu emin değilim.

Benim kodundan aşağıdaki hatayı alıyorum:

Curl error: error setting certificate verify locations: CAfile: /etc/ssl/certs /ca-certificates.crt CApath: none

Ben sadece onları kimlik doğrulaması sonra başka site başlatmak istiyorum, bizim site içindeki kullanıcıların tutmak istemiyorum. Bu standart bir HTML yazı çalışırsa, ben sunucu tarafı kodu kullanarak bu yeteneğini yeniden gerekir. Değil mi?

On a side note, I have done something like this in my former life with Coldfusion. It was much much easier. Surely PHP and all its users have come up with something!

1 Cevap

Siz cURL veya herhangi bir diğer benzeri yöntemlerle bunu yapmak mümkün olmayacaktır.

Yukarıda gönderdiniz kod örneği sunucusunda değil, istemci üzerinde çalışır. Bu nedenle üçüncü taraf web sitesi değil, istemci için sunucu kimlik doğrulaması vardır. Eğer sunucu tarafında imzalanması, müşteriye başka bir etki olarak bir çerez göndermek edemez beri oldukça işe yaramaz (iyi, vekil için gerçekten bir çözüm değildir, tüm siteyi, düşünmüyorsanız).

Arkanıza yaslanın ve düşünün ne zaman, kim burada kimlik doğrulaması gerekiyor? Istemci veya sunucu? The client yapar.

Sen üçüncü taraf web sitesinde CLIENT'I giriş için iş istemci tarafında yapmak gerekir. Sizin gizli form yaklaşım iyi çalışıyor, ama çok güvenli değildir.

Ayrıca HTML değerleri şifrelemek ve JavaScript onSubmit kullanarak istemci tarafı şifresini, ama bu (sizin şifresini anahtar ve algoritması değerlerini almak isteyen herhangi bir kötü niyetli bir kullanıcı için kullanılabilir olacak) bilinmezlik güvenlik olmak isterdim.

En iyi (iyi, güvenlik-bilge) üçüncü taraf web sitesinde isteği göndermek için Flash veya Java veya ActiveX kontrolünü kullanmak olacaktır. Bu şekilde, giriş kimlik gerçekten (ama çoğu kullanıcının ötesinde, hala mümkün) ayıklamak için kolay olmayan bir biçime kilitlenir ve istemci tarafında yürütülür.