2016-09-28 4 views
1

Ich möchte mein Kennwort auf der Clientseite vor dem Senden hashen (ich habe meine eigenen Gründe, ich weiß, was ich tue) zum Server. Ich benutze jsSHA (es funktioniert, ich alarmierte Ausgabe), um das Passwort zu hashen.Element vor dem Senden des Formulars anhängen

Ich erstelle ein neues Element, weisen das Hash-Passwort seinem Wert zu und hängen es an das Formular an. Aber die Form gibt es immer noch nicht ab.

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jsSHA/2.0.2/sha.js"></script> 
<form id = "form" name="form" method="post" action="verify.php" class="login"> 
    Username: <input type="text" name="username" style = "width: 350px"><br> 
    Password: <input type="password" name="pwd" id="pwd" style="width: 350px; margin-left: 3px;"><br> 
    Remember Me: <input type="checkbox" name="rememberme" value="1"><br> 
    <input type="submit" name="submit" value="Login!" class="loginbutton" onclick="submitForm();"> 
</form> 

JS

function submitForm(){ 
    var form = document.getElementById("form"); 
    var pwd = document.getElementById('pwd'); 
    var hash = new jsSHA("SHA-256", "TEXT", {numRounds: 1}); 
    hash.update(pwd.value); 
    var hash = hash.getHash("HEX"); 
    var password = document.createElement("password"); 
    password.name="password"; 
    password.type="hidden"; 
    password.id = "password"; 
    password.value = hash; 
    form.appendChild(password); 
    pwd.value = ""; 
    form.submit() 
} 

Sent params:

username: user 
pwd: "" 
rememberme: "1" 
submit: "Login!" 

Wie kann ich password: *some value* zu diesen gesendeten Parametern? Was mache ich falsch?

+2

Sollte Ihr 'document.createElement' anstelle von' password '' input' als Argument verwenden. – CuriousMind

+0

Darf ich eine alternative Lösung vorschlagen? Wie wäre es, den Wert der vorhandenen Pwd-Eingabe kurz vor dem Senden zu ändern? Auf diese Weise müssten Sie kein zusätzliches Element erstellen und das vorhandene entfernen. Dies gilt natürlich nur, solange Sie die Seite beim Senden wechseln. Für die AJAX-Verifikation möchten Sie das versteckte Element - aber in diesem Fall suchen Sie lieber nach ihm, anstatt es zu erstellen. –

+1

@HubertGrzeskkowiak Nun, ich habe es so gemacht, aber es hat mich irritiert, denn wenn ich auf submit klicke, ändert sich das Passwort von ********* in ************** ********************************** bevor die Seite neu geladen wird. – Mirakurun

Antwort

2

Sie erstellen ein Element password anstelle eines Elements input mit type="password". Browser senden nur Daten aus Formularelementen, die sie kennen (Eingabe, Schaltfläche, Textbereich usw.). Außerdem werden Eigenschaften für das Element festgelegt, aber das Festlegen von Attributen ist wahrscheinlich sicherer in Bezug auf die Kompatibilität.

+0

Sie haben Recht, danke. Ich werde diese Antwort annehmen, sobald ich dazu in der Lage bin. – Mirakurun

Verwandte Themen