2010-12-27 11 views
1

hier ist mein Szenario:Einfache HTTPS zu PHP Skript

Ich habe eine Website mit PHP, mySQL. Ich habe eine Software-Anwendung, die einen Login-Bildschirm hat und sendet Benutzernamen und Passwörter über das Internet von http:

public String GetWebPageSource(String pURL) 
    { 

     try 
     { 


      byte[] vReceivedBytes = null; 
      using (System.Net.WebClient vWebClient = new System.Net.WebClient()) 
      { 
       vReceivedBytes = vWebClient.DownloadData(pURL); 
      } 
      int vBomLen = 3; 
      byte[] vStrippedBytes = new byte[vReceivedBytes.Length - vBomLen]; 
      Array.Copy(vReceivedBytes, vBomLen, vStrippedBytes, 0, vReceivedBytes.Length - vBomLen); 

      return System.Text.Encoding.UTF8.GetString(vStrippedBytes); 



     } 
     catch (Exception e) 
     { 

      Console.WriteLine(e.Message); 
      return null; 
     } 

    } 

So einen Benutzernamen senden und das Passwort Ich würde schreiben:

GetWebPageSource ("http: // mywebsite.com/Login.php?username=stackoverflow & password = iscool ")

und die php-Datei würde einen Text ausspucken, der sagt, ob das Passwort akzeptiert oder abgelehnt wird.

Dies ist jedoch nicht sicher. Also möchte ich es sicher machen ... https. Wie einfach ist es, https zu integrieren? Wie stark wird sich der Code ändern? Wie viel muss ich handhaben? Was ist für mich transparent? Muss ich prüfen, ob ein Cookie bereits existiert und wenn nicht, schreibe ich die Methoden zur Authentifizierung oder gibt es bereits Bibliotheken, die das für mich tun?

Antwort

1

Für die Programmierung Sicht, einen Aufruf eines PHP-Skript mit http oder https macht keinen Unterschied. Es ist nur eine Frage des Konfigurierens von Apache (oder eines anderen Webservers), um https zu behandeln (am wichtigsten ist das Erhalten eines Zertifikats).

+0

So kann ich Sie https: // Pfad anstelle von http, wenn Sie die Anfrage stellen. Wie wird der Cookie verwaltet? Was ist das Leben? Ich würde es hassen, wenn der Server sich jedes Mal neu authentifizieren müsste, wenn ich einen GetWebPageSource-Aufruf mache. Welchen Leistungseinbruch hat der Server von der Verwendung von SSL? Also muss ich diesen Code nicht ändern? Wenn ich die Schlüssel usw. auf dem Server-Ende konfiguriere, wird alles für mich transparent sein? – Tom

+0

Ja, sobald Sie Ihren Webserver korrekt konfiguriert haben, sollte er sowohl HTTP- als auch HTTPS-Anfragen abhören. Sie werden den Code wahrscheinlich nicht viel ändern müssen, aber es ist eine gute Methode, https für Ihre Authentifizierungsseite zu erzwingen. Ich kenne die Best Practice dafür nicht (wahrscheinlich eine Art Redirect), aber ich bin mir sicher, dass Sie eine Menge Diskussionen online finden werden. – Tom

+0

Ich bin mir nicht sicher, wie die Sitzungsverwaltung mit C# funktioniert, aber im Allgemeinen behandeln die meisten Sprachen wie PHP Sitzungen ziemlich transparent. Sie können einfach eine Funktion (start_session) aufrufen und dann einem globalen Sitzungsarray Werte wie den Benutzernamen für die Anmeldung hinzufügen. Dann müssen andere Seiten/Skripts nur das Array überprüfen, um sicherzustellen, dass Sie angemeldet sind. (Ich erwähne PHP, weil es in Ihrem Titel ist. Ist das "Back-End" in PHP?) – Tom

0

Kurz gesagt, möchten Sie den Webserver für die Verwendung von TLS/SSL konfigurieren. Es spielt keine Rolle, welche serverseitige Sprache Sie für Ihre Site verwenden.

Im Allgemeinen setzen die serverseitigen Skripts bei erfolgreicher Authentifizierung einen Cookie/eine Sitzung und überprüfen dann die Cookie- oder Sitzungsdaten für alle Aktionen, die einen authentifizierten Benutzer erfordern. Bei einem ordnungsgemäß konfigurierten Server wird die Verschlüsselung der Authentifizierung automatisch vom Server und vom Browser des Clients übernommen.

Ich empfehle auch, einen Debugging-Proxy und beobachten Sie die Anforderungen/Antworten auf und von dem Server während der Authentifizierung Schritte. Dies zeigt Ihnen, ob Sie tatsächlich eine sichere Verbindung haben oder nicht.

+0

Debugging-Proxy? Wo kann ich eins von denen bekommen? :) Bitte sehen Sie meine Kommentar auf sfk's Post – Tom

+0

Persönlich liebe ich Charles, die eine Shareware ist, hat aber eine anständige Studie. Wenn Sie die App starten, "registriert" sie automatisch alle Anfragen und Antworten an Ihren Browser oder andere Apps, die HTTP verwenden. Es ist sehr nützlich für das Debuggen von AJAX-Back-Ends, iPhone-Apps usw. In diesem Fall können Sie überprüfen, ob Ihre Authentifizierung verschlüsselt ist, indem Sie die Anforderungen Ihres auth-Skripts betrachten und den entstellten Anfragetext sehen. – Tom