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