首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript密码安全

Javascript密码安全
EN

Software Engineering用户
提问于 2015-07-31 23:24:29
回答 3查看 1.5K关注 0票数 1

我对提供给这里的答案有困难,但我不知道如何实现它。我的代码几乎是相同的:

代码语言:javascript
复制
<script language="javascript">
  function check(form) {
    if(form.userName.value == "User" && form.userPass.value == "averyobviouspassword") {
      window.open('testok/menu.html')
    }
    else {
      alert("Wrong Password Or Username")
    }
  }
</script>

这方面的问题是,如果要检查页面上的元素,则可以清楚地看到密码。我并不是在寻找像SQL数据库这样的其他解决方案,因为这只是一个测试网站。我认为可行的解决办法是:

代码语言:javascript
复制
if(hash(enteredPassword) == storedHash)

我只是不知道怎么实现。

EN

回答 3

Software Engineering用户

发布于 2015-08-01 02:17:29

使用JavaScript登录页面实际上是不可取的。这是完全不安全的。大多数登录页面都是在服务器端使用PHP、ASP.NET、Node.Js等完成的,而不是在用户可以看到代码的客户端。

票数 5
EN

Software Engineering用户

发布于 2015-08-01 11:53:40

我强烈建议您不要在客户端使用JavaScript进行此操作。

即使它只是为了测试和学习的目的,它是非常(非常)糟糕的做法!您要做的是,最好是客户端验证。

想象一下,当您不使用服务器端代码进行验证时,会出现以下情况:在访问您的(测试)网站时,有人很简单地删除了这个js函数。现在你所有的安全都消失了。一开始它就不在那里。

现在请回答你的问题。如果您实际上想要使用此密码,并且没有明文密码,则需要对其进行散列并添加盐分和胡椒。您应该使用哈希函数,这是很难蛮力的(以下是一些例子链接)

这也是在数据库中存储密码的标准做法。

在这里,您可以在js中看到同样的问题。即使您创建哈希,并且用户无法在合理的时间内计算密码,也没有安全性。他还是可以改变js的。

当您只想简单地将散列发送到服务器(没有TLS)时,也会出现类似的问题,同样也会出现错误的想法(请看这里的链接)。

所以,即使它是为了测试,为了良好的实践,不要。你将不会从它学到任何有价值的东西。

还有很多其他的话题,因为JavaScript是一个很好的工具来完成任务。这不是他们中的一个。

票数 2
EN

Software Engineering用户

发布于 2015-12-06 06:20:11

前面的注释都是有效的-但如果您只是想做一些混淆,您可以使用base64转换函数atob()btoa()。见下文:

代码语言:javascript
复制
<script language="javascript">
  function check(form) {
    if(form.userName.value == "User" && atob(form.userPass.value) == "j÷«Êﬥ«,ÂÝ") {
      window.open('testok/menu.html')
    }
    else {
      alert("Wrong Password Or Username")
    }
  }
</script>

这仍然使用您的原始密码"averyobviouspassword“。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/291494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档