我对提供给这里的答案有困难,但我不知道如何实现它。我的代码几乎是相同的:
<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数据库这样的其他解决方案,因为这只是一个测试网站。我认为可行的解决办法是:
if(hash(enteredPassword) == storedHash)我只是不知道怎么实现。
发布于 2015-08-01 02:17:29
使用JavaScript登录页面实际上是不可取的。这是完全不安全的。大多数登录页面都是在服务器端使用PHP、ASP.NET、Node.Js等完成的,而不是在用户可以看到代码的客户端。
发布于 2015-08-01 11:53:40
我强烈建议您不要在客户端使用JavaScript进行此操作。
即使它只是为了测试和学习的目的,它是非常(非常)糟糕的做法!您要做的是,最好是客户端验证。
想象一下,当您不使用服务器端代码进行验证时,会出现以下情况:在访问您的(测试)网站时,有人很简单地删除了这个js函数。现在你所有的安全都消失了。一开始它就不在那里。
现在请回答你的问题。如果您实际上想要使用此密码,并且没有明文密码,则需要对其进行散列并添加盐分和胡椒。您应该使用哈希函数,这是很难蛮力的(以下是一些例子链接)
这也是在数据库中存储密码的标准做法。
在这里,您可以在js中看到同样的问题。即使您创建哈希,并且用户无法在合理的时间内计算密码,也没有安全性。他还是可以改变js的。
当您只想简单地将散列发送到服务器(没有TLS)时,也会出现类似的问题,同样也会出现错误的想法(请看这里的链接)。
所以,即使它是为了测试,为了良好的实践,不要。你将不会从它学到任何有价值的东西。
还有很多其他的话题,因为JavaScript是一个很好的工具来完成任务。这不是他们中的一个。
发布于 2015-12-06 06:20:11
前面的注释都是有效的-但如果您只是想做一些混淆,您可以使用base64转换函数atob()和btoa()。见下文:
<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“。
https://softwareengineering.stackexchange.com/questions/291494
复制相似问题