Код хеш-функции над данными в форме - уже есть функция, но не знаю, где вызывать - PullRequest
3 голосов
/ 07 апреля 2011

У меня есть форма на моей html-странице

<form id="login_form" method="POST" action="index.php">
    <table>
        <tr>
            <td><label style="color:#47A3FF;" for="name" title="User name">
                Username</label></td>
            <td><input style="color:#47A3FF;" dojoType="dijit.form.TextBox"
                type="text" name="username"></td>
        </tr>
        <tr>
            <td><label style="color:#47A3FF;" for="loc">Password: </label></td>
            <td><input style="color:#47A3FF;" dojoType="dijit.form.TextBox"
                type="password" name="password"></td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <button dojoType="dijit.form.Button"  class="soria" style="border: 1px solid black; float:right;"
                type="submit">Login</button></td>
        </tr>
    </table>
</form>

Нужно ли использовать SHA256 при отправке имени пользователя и пароля по сети?Как использовать SHA256 над этими данными (у меня есть функция sha256_hash, которая использует строку и возвращает хэшированное значение, но я не знаю, где вызвать эту функцию)?

Ответы [ 2 ]

3 голосов
/ 07 апреля 2011

Вы должны хешировать нужные значения при отправке формы.

Я думаю, что-то вроде этого должно работать:

HTML

<form onsubmit="return myOnSubmit(this);">

JavaScript

function myOnSubmit(aForm) {
    //Getting the two input objects
    var inputUsername = aForm['username'];
    var inputPassword = aForm['password'];

    //Hashing the values before submitting
    inputUsername.value = sha256_hash(inputUsername.value);
    inputPassword.value = sha256_hash(inputPassword.value);

    //Submitting
    return true;
}

РЕДАКТИРОВАТЬ: из-за части «Хэширование значений перед отправкой», это не будет работать, если у вас есть свойство maxlength, потому что хешированные значения намного длиннее, чем просто пароль.

Если вы ДОЛЖНЫ использовать максимальную длину, вам потребуется реализовать скрытые поля и изменить эти значения, а также убедиться, что поля, содержащие чистые данные, не отправляются (за пределами тега <FORM>).

1 голос
/ 07 апреля 2011
<button dojoType="dijit.form.Button"  class="soria" style="border: 1px solid black; float:right;" type="submit" onclick="username.value=sha256_hash(username.value);password.value=sha256_hash(password.value)">Login</button></td>

Как правило, когда вы отправляете конфиденциальные данные, вам нужно беспокоиться только о пароле, поэтому вы можете хешировать пароль и оставить пользователя как есть.

...