[PHP] HTTPS/GET Passwort übertragen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Blackb!rd, 5. Februar 2013 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 5. Februar 2013
    HTTPS/GET Passwort übertragen

    Hallo zusammen,

    ich arbeite derzeit an einer API, auf die ich per GET zugreifen möchte. Natürlich muss ich einen benutzer und ein passwort mitgeben.

    Daher die Frage ob es sicher ist ein Passwort im Klartext per GET mitzugeben oder stellt dies ein Risiko dar? Soweit ich weiß ist bei HTTPS auch der GET Parameter verschlüsselt, oder irre ich mich hier?


    Gruß Blackb!rd
     
  2. 6. Februar 2013
    AW: HTTPS/GET Passwort übertragen

    Via HTTPS ist alles verschlüsselt (kannst ja einfach mal ein GET auf Google mit Wireshark sniffen). Ich würde dennoch das PW zumindest in irgend einer Form gehashed losschicken.
     
    1 Person gefällt das.
  3. 6. Februar 2013
    AW: HTTPS/GET Passwort übertragen

    Kannst du in der API nicht auch POST benutzen? Das sollte eigentlich jeder Programmierer managen können.
    Und natürlich das PW als hash übertragen. Ansonsten vielleicht wenigstens base64 oder so.
     
    1 Person gefällt das.
  4. 6. Februar 2013
    AW: HTTPS/GET Passwort übertragen

    Hey,

    danke schonmal für eure Antworten!

    Das Problem ist, dass ich mit dem Framework Laravel arbeite, welches eine eigene Hash-Methode verwendet. Die weiß ich am anderen Ende der API leider nicht, weshalb ich das Passwort derzeit im Klartext versende! Natürlich könnte ich hingehen und zusätzlich bevor ich den Framework Hash benutze nochmal MD5 drüberjagen.

    Aber welchen Vorteil versprecht Ihr euch davon? Verschlüsselt ist Verschlüsselt oder?


    Das ich das ganze nicht über einen Post-Request regeln kann hat auch wieder seine Gründe im Framework. Das Framework unterscheidet zwischen POST und GET Anfragen und routet in unterschiedliche Controller Methoden. Da ich aber eine zentrale Funktion für die Content-Erzeugung habe die sich nur im AusgabeTyp( HTML,PDF,API ) unterscheidet, muss ich hier auf diverse GET Funktionen zurückgreifen.



    Gruß Blackb!rd
     
  5. 6. Februar 2013
    AW: HTTPS/GET Passwort übertragen

    Das Kommt darauf an, wo du Prioritäten setzt. Wenn ich nen debugging Proxy wie Fiddler dazwischen hänge, habe ich das Passwort ganz schnell im Klarzext. Ist halt die Frage ob hier sichergestellt werden soll ob der Anwender (API Sender) an das PW soll und ob du gegen Man-In-The-Middle Attacken via Design schützten möchtest oder nicht.
    PS: Ja ich weiß, dass es hier eine Zertifikatswarnung gibt aber mal ehrlich, der normale Benutzer klickt einfach "ja trotzdem annehmen" und ist froh das alles funktioniert.
     
  6. 6. Februar 2013
    AW: HTTPS/GET Passwort übertragen

    Hey,

    kenne mich mit den verschiedenen Möglichkeiten eine Verbindung zu hacken oder anzuzapfen leider nicht sonderlich gut aus! Allerdings wenn derjenige das Passwort mitsniffen kann, dann kann er genauso den Hash mitsniffen, der in diesem Fall ja als "Passwort" für die API gilt. Damit hätte er vollen Zugriff auf die API.

    Das Problem mit dem Zertifikat sehe ich nicht so ernst, da die API-Schnitstelle hauptsächlich von einer App genutzt werden soll. Ich denke dort kann man es realisieren nur validierte Zertifkate zu aktzeptieren!


    Gruß Blackb!rd
     
  7. 6. Februar 2013
    AW: HTTPS/GET Passwort übertragen

    Der Vorteil eines Hash ist, dass der Angreifer das Passwort nicht im Klartext abgreifen kann.

    Das man damit die API bedienen kann ist klar, aber oft benutzt man das selbe Passwort bei verschiedenen Diensten (Webmail/Foren/Paypal ...) worauf ein Angreifer dann theoretisch auch Zugriff hätte.

    Überlege dir einen eigenen Algorithmus zum verschlüsseln der Passwörter (Kaskade und mehrere Runden) um den Hash möglichst gut zu "verfremden", damit eine Dict-Attake oder Bruteforce nicht funktioniert.
     
    1 Person gefällt das.
  8. 6. Februar 2013
    AW: HTTPS/GET Passwort übertragen

    Oder du speicherst die einfach einen gesonderten API Key ab. Dann brauchst du das Passwort vielleicht gar nicht.

    APIKey = crypt(Username.Passwort.ID) oder irgendwie so was.
    Oder eben einen API Key in der Datenbank (Random generiert) und dass muss der User dann "extern" angeben. Wird ja sehr oft so geregelt.
     
  9. 7. Februar 2013
    AW: HTTPS/GET Passwort übertragen

    Hey,

    okay - dann werde ich wohl doch die Verwendung eines API-Key's vorziehen!

    Danke für eure zahlreichen Tipps und Anregungen. Bw's sind raus soweit möglich!

    Gruß Blackb!rd
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.