使用密码保护某个功能

时间:2013-06-30 10:23:40

标签: javascript jquery

我正在创建一个游戏,如果玩家想要玩某个级别,玩家必须提供密码才能解锁。我现在有以下代码:

var password;
var psd= "abcdefg";
password=prompt('Enter the Passcode: ');
if (password==psd){functions}

但是,我想这样做,以便屏蔽密码的输入文本。我还想让它更安全一点,这样玩家就无法通过检查JavaScript代码来欺骗自己。有一种简单的方法可以做到这一点吗?

6 个答案:

答案 0 :(得分:2)

我这样做的方法是使用一个html对话框,其中包含按钮和密码输入元素。 E.g:

<input type="password" id="pwd">

这将为您提供您所指的黑点。

在不使用散列函数和服务器端运行时通信的情况下,您无法在客户端保护密码。如果您在客户端上进行比较,那么在某些时候密码或哈希值必须存在于客户端上。

答案 1 :(得分:1)

你可以使用MD5,它是一种哈希算法。

检查出来:http://pajhome.org.uk/crypt/md5/

答案 2 :(得分:1)

对于安全位,你可以散列正确的密码然后创建输入的hast并检查它们是否相等(例如md5或sha1)(在md5之前的答案中发布(我认为sha1也是)不是“安全”,但我怀疑任何人都会花费这么多精力来解锁这个级别

答案 3 :(得分:0)

您可以通过提供<input type='password' >

来实现

但是,由于您在java脚本中明确存储密码,因此没有意义。查看源的任何人都可以获取密码。唯一的方法是将密码存储在数据库中,并使用AJAX检查密码是否正确。

答案 4 :(得分:0)

无论您做什么,密码都将被查看,特别是如果一切都在客户端。

但如果只是模糊密码,可以用很多方式完成。

例如:

var psd = "\u0041\u0042\u0043\u0044\u0045\u0046\u0047".toLowerCase();  // abcdefg

或者使用JS本身的功能:

btoa("abcdefg");      // "YWJjZGVmZw=="

atob("YWJjZGVmZw=="); // "abcdefg"

答案 5 :(得分:0)

将密码混淆一点的一个想法是生成用户特定的密码,具体取决于您可能拥有的一些数据,如电子邮件地址和昵称:

var email = "xyz@abc.com";
var player = "zoidberg";

function createHash(text) {
    //a function that returns a unique hash, i.e. MD5 or others (depending on your needs of security)
}

//this is the password that you show the user when he finished a level
var pw = createHash(email + player).substring(0, 8);

//this is the internal hashed passwork
var hashedPw = createHash(pw);

//a function that validates a password that was entered by the user
function validate(userInput) {
    if (createHash(userInput) === hashedPw) {
        return true;
    }
    return false;
}

当然,如果有人查看你的javascript代码,他仍然可以找出密码创建背后的整个逻辑,但至少你没有用明确的字母写下你的密码。另外,不同的玩家不能只分享他们的密码,因为每个玩家都有个人密码。

话虽这么说,最安全的方法当然是将整个身份验证过程转移到服务器端。在数据库中的某个地方保护您的密码并进行AJAX调用以验证用户输入的密码。

相关问题