2017-01-02 2 views
-4

Это код, который я использую, чтобы проверить свои формы до сих пор:JS Простой, но безопасный вход?

<input type="text" id="usr"/> 
<input type="password" id="pwd"/> 

Сценарий:

if (usr.value == "blablahusername") { 
if (pwd.value == "blahblahpassword") { 
    //do stuffs 
} 
} 

Этот код работает, но это небезопасно, как вы просто должны Осмотреть элемент (хром), чтобы узнать, что такое пароль. Итак, я ищу не сложный, безопасный способ сделать это.

+0

Это невозможно без сервера – epascarello

+1

Почему бы вам нужно сделать это, используя только на стороне клиента JavaScript? Это возможно-иш, но не так много веских причин. – Ryan

+0

схемы аутентификации, которые являются сложными, @redFIVE – IamGuest

ответ

-2

Для простой защиты для запуска вы можете использовать какой-то алгоритм хэширования. SHA-1 - это, по сути, достойный стандарт безопасности, вы можете использовать его для конвертации контента на стороне клиента.

Рассмотрим этот код:

String.prototype.hashCode = function() { 
 
    var hash = 0, i, chr, len; 
 
    if (this.length === 0) return hash; 
 
    for (i = 0, len = this.length; i < len; i++) { 
 
    chr = this.charCodeAt(i); 
 
    hash = ((hash << 5) - hash) + chr; 
 
    hash |= 0; // Convert to 32bit integer 
 
    } 
 
    return hash; 
 
}; 
 
$(function() { 
 
    var username = "admin"; 
 
    var password = "68170072"; 
 
    $("#check").click(function() { 
 
    if ($("#username").val() == "admin" && $("#password").val().hashCode() == password) 
 
     alert("Perfect"); 
 
    else 
 
     alert("Wrong"); 
 
    return false; 
 
    }); 
 
});
* {font-family: monospace;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
Username: <input type="text" id="username" /><br /> 
 
Password: <input type="password" id="password" /><br /> 
 
<a href="#" id="check">Check</a> 
 
<p>Username: admin, Password: letmein</p>

я использовал sha1 здесь. Здесь мы можем использовать любой достойный алгоритм.

Примечание: реализация не работает хорошо в Stack Snippets. Но в этом суть.

  1. Возьмите соль.
  2. Преобразование пароля в хэш с использованием соли.
  3. Вышеупомянутый текст является односторонним преобразованием.
  4. Сделайте копию ее в ее окончательной форме и вставьте на страницу.
  5. Только когда правильный пароль проходит процесс, он преобразуется в хеширование.
  6. Сравните хешированный с сохраненным паролем.

Всего несколько моих центов.

Видел что-то подобное: Generate a Hash from string in Javascript/jQuery

+0

Да, но если это происходит на стороне клиента, вы можете тривиально удалить условное и 'alert (« Perfekt »)' всегда. Если вы хотите проверку подлинности на стороне клиента, то вам действительно нужно зашифровать содержимое (или '// do stuffs'). – Bergi

+0

@IamGuest Обновлено. –

+0

@ Bergi Я действительно не шифрую вещи здесь. Я полностью конвертирую их в хэш, которые безвозвратно. Поэтому, несмотря ни на что, это полностью безопасно. –

Смежные вопросы