Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止用户轻松访问本地存储_Javascript_Html_Local Storage - Fatal编程技术网

Javascript 如何防止用户轻松访问本地存储

Javascript 如何防止用户轻松访问本地存储,javascript,html,local-storage,Javascript,Html,Local Storage,我正在为我的html博客网站创建登录/注册表单。我已经使用localStorage或sessionStorage创建了用户信息。每当有人创建帐户时,我都会将它存储起来,每当有人想登录时,我都会得到它 我还没有注销或实际用户页面,但这不是我的问题。问题在于,使用localStorage.clear() 下面是一个HTML示例: <html> <head> <script src="index.js"></script> <li

我正在为我的html博客网站创建登录/注册表单。我已经使用
localStorage
sessionStorage
创建了用户信息。每当有人创建帐户时,我都会将它存储起来,每当有人想登录时,我都会得到它

我还没有注销或实际用户页面,但这不是我的问题。问题在于,使用
localStorage.clear()

下面是一个HTML示例:

<html>

<head>
    <script src="index.js"></script>
    <link rel="stylesheet" href="style.css">
    <title>Accounts</title>
</head>

<body>
    <article>
        <h1>Log In</h1>
        <input type="text" id="signin-username" placeholder="Username" value="">
        <input type="password" id="signin-password" placeholder="Password" value="">
        <button type="submit" onclick="signin()">Sign In</button>
        <!------------------------------------>
        <h1>Create Account</h1>
        <input type="text" id="create-username" placeholder="Username" value="">
        <input type="password" id="create-password" placeholder="Password" value="">
        <button type="submit" onclick="create()">Create Account</button>
    </article>
</body>

</html>

账户
登录
登录
创建帐户
创建帐户
下面是它的javascript:

var a = localStorage.length;

function signin() {
    var name = document.getElementById('signin-username').value;
    var pass = document.getElementById('signin-password').value;

    if (name === '' && pass === '') {
        console.log('Please provide your account details')
    }

    else if (name === '') {
        console.log('Please provide your username!');
    }

    else if (pass === '') {
        console.log('Please provide your password!');
    }

    else {
        var ii;
        for (ii = 0; ii < a; ii++) {
            if (name === localStorage.key(ii)) {
                console.log('Logged in as ' + name);
                ii > a
            }
            else {
                console.log('Account Does Not Exist!')
            }
        }
    }
};

function create() {

    var username = document.getElementById('create-username').value;
    var password = document.getElementById('create-password').value;

    if (username === '' && password === '') {
        console.log('Invalid Username and Password')
    }

    else if (username === '') {
        console.log('Invalid Username');
    }

    else if (password === '') {
        console.log('Invalid Password');
    }

    else {
        var i;
        for (i = 0; i < a; i++) {
            if (username === localStorage.key(i)) {
                console.log('Username Exists!');
            }
            else {
                localStorage.setItem(username, password)
            }
        };
    }
}
var a=localStorage.length;
函数签名(){
var name=document.getElementById('signin-username')。值;
var pass=document.getElementById('signin-password')。值;
如果(名称==''&&通过==''){
console.log('请提供您的帐户详细信息')
}
else if(name==''){
log('请提供您的用户名!');
}
否则如果(通过==''){
log('请提供您的密码!');
}
否则{
var ii;
对于(ii=0;iia
}
否则{
console.log('帐户不存在!')
}
}
}
};
函数create(){
var username=document.getElementById('create-username').value;
var password=document.getElementById('create-password')。值;
如果(用户名==''&&密码==''){
console.log('无效的用户名和密码')
}
否则如果(用户名==''){
console.log(“无效用户名”);
}
否则如果(密码==''){
console.log(“无效密码”);
}
否则{
var i;
对于(i=0;i
为了让它有意义,我不得不发布完整的内容。 有人对存储数据有什么建议吗,比如用户cookie? 你甚至可以将我重定向到一个登录示例

我已经使用
localStorage
sessionStorage
创建了用户信息

LocalStorage对于web浏览器来说是“本地”的。存储在LocalStorage中的数据不会与web服务器或查看站点的其他web浏览器共享。将帐户数据存储在这些位置是没有意义的,因为这样做将导致“帐户”只存在于一台计算机上

(SessionStorage的工作原理与此类似,只是在浏览器关闭时它会消失——因此它对您的用途就更没有用处了。)


如果希望允许用户在网站上创建帐户,则需要在web服务器上运行某种代码来实现这些帐户。无法完全在客户端Javascript中实现此功能。

如果有人问我,我没有编写代码片段,因为Stackoverflow代码片段是沙盒。将密码存储在任何地方都是一个糟糕的主意,更不用说在浏览器中了。密码应该是散列的,您只将散列存储在数据库中,而不存储在浏览器中。会话管理通常的工作方式是只在浏览器中存储令牌,令牌通过授权头或Cookie传输到服务器。服务器将这个令牌解析给用户并发送回用户数据。我本来打算使用php和SQL,但我还不知道这些东西。当然,你应该先了解这些东西。你不能只使用HTML&JS就拥有一个帐户系统,更不用说一个安全的了。你需要一些服务器来处理这个问题。如果您不想设置一个完整的身份验证服务器,那么您唯一的其他选择就是为现有的解决方案(如Auth0)付费(这也是服务器最好使用的解决方案),没问题!祝你好运