你能密码保护html页面吗?
我有一个关于html/JavaScript/PHP的问题,我希望只能填写正确的密码才能查看几页,但我不希望您必须将密码放在每个私人页面上你访问。你能密码保护html页面吗?
例如:
页:
- 的login.html
- PrivatePage1.html
- PrivatePage2.html
现在你可以去:“WWW。 mywebsite.com/PrivatePage1.html',你不需要输入密码,那么有没有办法检查他们是否已经登录了'Lo gin.hmtl”
我的代码上 '的login.html'
https://hastebin.com/egehaboxig.js
password();
function password() {
var userPassword;
var myPassword = "a";
userPassword = prompt("Enter the password:");
if(userPassword == myPasswordfun) {
alert('Correct, press ok to enter the site.');
}else if(userPassword == null) {
window.location ="http://www.google.com";
}else {
alert('Incorrect');
password();
}
}
感谢您的阅读!
我会避免在Javascript中使用localStorage
,因为任何人都可以在客户端(在浏览器中)手动验证自己。真正的安全密码处理的唯一选择是服务器端身份验证。
PHP有一个内置变量$_SESSION
来处理这个问题。首先,您必须使用session_start()
命令在服务器上启动会话。一旦用户输入密码,您可以验证它,然后设置$_SESSION['valid'] = TRUE
。我们可以检查用户是否使用以下功能进行了验证。
public function is_valid() {
//Returns true if session is valid, otherwise returns false.
if(isset($_SESSION['valid'])) {
return $_SESSION['valid'];
}
else {
return FALSE;
}
}
会话在用户关闭浏览器窗口时结束。
密码本身应该作为散列存储在数据库中。这将阻止任何人,包括网站管理员直接访问密码。一旦密码被散列,你可以散列用户输入并比较两个散列。如果它们匹配,则知道它们输入了正确的密码。
我认为你不应该使用LocalStorage的第一个原因并不完全正确,但使用PHP $ _SESSION确实更安全 –
您需要将他们的成功登录存储在某个地方(可能是最安全的服务器)或可能位于客户端(安全性较低)。
有几种机制可以工作,但是,在客户端上,localStorage
是最简单的。
成功登录后,你将值设置到localStorage
,像这样:
localStorage.setItem("loggedIn", "true");
而且,要检查记录在每一页上,你会写:
if(localStorage.getItem("loggedIn") === "true"){
// user is logged in
} else {
// user is not logged in
}
当然,如果客户端不支持localStorage,这将不起作用... – junkfoodjunkie
@junkfoodjunkie当然。如果关闭,任何客户端机制也不会。 –
是的 - 我只是觉得推荐localStorage作为这种东西的唯一解决方案是......糟糕。人们应该努力教好解决方案。无论如何,这些解决方案都有效,但如果localStorage不被支持,它应该回退到其他地方,或者最好使用服务器端的东西。 – junkfoodjunkie
你明白,每个人都可以查看你的html页面的源代码并找出密码,对吧? –
你需要一个会话变量。 –
这就像最低效的密码保护一样,因为任何人都可以在源视图中看到密码。但是,可以使用JavaScript存储和检查Cookie。您可以将“logged_in”Cookie存储一小时(或者您希望用户保持登录状态的时间长),以实现您想要的效果。真正的保护必须在服务器端完成。进一步的参考:https://www.w3schools.com/js/js_cookies.asp – ProgrammingMachine5000