Zend_Auth setCredentialTreatment

8

Ich verwende Zend_Auth mit setCredentialTreatment , um die Hash-Methode und das Salz zu setzen. Ich sehe alle Beispiele, die so etwas tun, wobei salt scheinbar als Text eingefügt wird.

  

- & gt; setCredentialTreatment ('SHA1 (CONCAT (?, Salz))'

aber mein Salz ist in der Datenbank gespeichert. Ich könnte es zuerst abrufen und dann in setCredentialTreatment verwenden, aber gibt es eine Möglichkeit, es direkt als Feldnamen zu definieren, also würde setCredentialTreatment wissen, um es aus diesem Feld zu bekommen? ähnlich wie wir den Feldnamen für den Benutzernamen oder das Passwort definieren

%Vor%

Ein Nebenproblem, das ich habe, ist, dass ich SHA512 nicht SHA1 verwenden möchte. Ist das möglich oder nicht verfügbar? Alle Beispiele, die ich mit SHA1 sehe.

Ich sollte sagen, ich bin ziemlich neu bei zend und portiere eine bestehende Anwendung, also bitte schalte mich mit den Antworten ein.

    
jblue 16.09.2010, 10:45
quelle

2 Antworten

8

Das von Ihnen angegebene Beispiel verwendet das in der Datenbank gespeicherte Salz. Es wird funktionieren, solange das Salz in jeder Reihe in einem Feld namens "Salz" gespeichert ist. Wenn das Salz nicht in der Datenbank und stattdessen in einer PHP-Variablen wäre, würde der Code eher wie folgt aussehen:

%Vor%

Was die Verwendung von SHA512 betrifft, könnte dies ein wenig komplizierter sein. Angenommen, Sie verwenden MySQL, ist SHA1 () in diesem Fall eine MySQL-Funktion, und MySQL hat keine Funktion für SHA512, soweit ich das beurteilen kann, und auch nicht PHP (edit: Ich lag falsch mit letzterem, siehe Kommentare ). Sie müssen also Ihre eigene PHP SHA512-Funktion implementieren, zuerst das Salz für den Benutzer aus der Datenbank laden, dann das Ergebnis hashen und nichts mit der Variablen in setCredentialTreatment tun.

Wie die andere Antwort vorgeschlagen hat, möchtest du vielleicht deinen eigenen Zend_Auth_Adapter dafür schreiben. Ein Auth-Adapter ist eine Klasse, die die Authentifizierung übernimmt, vermutlich in dem Moment, in dem du Zend_Auth_Adapter_DbTable benutzt. Sie können weitere Informationen über Auth-Adapter im Handbuch finden: Ссылка

Hier ist ein Beispiel:

%Vor%     
Tim Fountain 16.09.2010, 12:04
quelle
2

Sie können Ihre eigene Zend_Auth_Adapter schreiben.

    
pltvs 16.09.2010 11:02
quelle