当前位置: 首页> 科技> 数码 > 建筑工程网官网平台_深圳展厅设计装修_保定网站推广公司_销售清单软件永久免费版

建筑工程网官网平台_深圳展厅设计装修_保定网站推广公司_销售清单软件永久免费版

时间:2025/7/10 17:37:54来源:https://blog.csdn.net/san3144393495/article/details/145762628 浏览次数:2次
建筑工程网官网平台_深圳展厅设计装修_保定网站推广公司_销售清单软件永久免费版

cookie技术

cookie就是身份验证表示,通过cookie好区分每个用户的个人数据和权限,第一次登陆之后正常的网站都会赋予一个cookie

写写一个后台界面,直接让ai去写就可以

然后自己需要的提交方式,和表单值自己修改即可

生成cookie的流程

然后再创建一个专门存储账号密码的表

如何写一个登录验证代码

这里可以看到是登录成功挑战到index-c,但是我们也可以直接访问,这就造成了为未授权访问漏洞;

通过这段代码生成个cookie

现在直接访问就不懈怠任何cookie信息

这样就可以通过携带的cookie信息判断是否是管理员

然后等出按钮就是将cookie为空、

这里就涉及到了盗取管理员cookie访问管理员界面的问题,如果知道管理员的cookie可以直接访问后台

直接手写cookie访问

这种就不是很安全

session技术

优势 

在创建刚刚的三个文件,换成-s

生成的s文件就存储到服务端

登录逻辑跟之前的一样

但这就是通过判断存储的s形的内容来判断,而在cookie上只能看到他使用了是形的一段字符串

判读是cookie还是s行,看网站大小

把浏览器关闭之后是否还能登录,不能就是s形

 token技术

token具有数据唯一性

每生成一个数据包都会有唯一的token值,如果token值不对,发送过去的数据包,服务端就不会处理,而是直接丢弃

这最直观的就是防止暴力破解,爆破了解的数据包重发,能改账户密码,但是预知不了下一个数据包的token值,服务端直接丢弃

token值的创建和前端传输时隐藏

hidde隐藏属性

在写一个管理员界面的校验

老师写的这个token验证还是有点问题,数据包可以重放,没有判断好token

代码

admin-c

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>后台登录</title>
</head>
<body>
<div style="text-align: center; margin-top: 100px;"><h2>后台登录</h2><form action=" " method="post" style="display: inline-block; text-align: left;"><div style="margin-bottom: 15px;"><label for="username" style="display: block; margin-bottom: 5px;">用户名:</label><input type="text" id="username" name="username" required style="width: 200px; padding: 5px;"></div><div style="margin-bottom: 15px;"><label for="password" style="display: block; margin-bottom: 5px;">密码:</label><input type="password" id="password" name="password" required style="width: 200px; padding: 5px;"></div><div style="text-align: center;"><button type="submit" style="padding: 10px 20px; background-color: #4CAF50; color: white; border: none; cursor: pointer;">登录</button></div></form><div style="margin-top: 15px;"><a href="#" style="color: #4CAF50; text-decoration: none;">忘记密码?</a></div>
</div>
</body>
</html><?php
include '../config.php';$user=@$_POST['username'];
$pass=@$_POST['password'];
$sql="select * from admin where username='$user' and password='$pass';";
$data=mysqli_query($con,$sql);
if($_SERVER['REQUEST_METHOD']=='POST'){//$_SERVER['REQUEST_METHOD']该变量中存储的是表单提交的方式。所以获取表单值if(mysqli_num_rows($data) > 0){//mysqli_num_rows返回的行数$expire= time()+60*60*24*30;//30天,第一个60是秒setcookie("username",$user,$expire);setcookie("password",$pass,$expire);//echo "<script>alert('登录成功')</script>";header("Location: index-c.php");}else{echo "<script>alert('登录失败')</script>";}
}

index-c

<?php
if($_COOKIE['username']=='admin' and $_COOKIE['password']=='123456'){}else{header('location:admin-c.php');
}?>
<!DOCTYPE html>
<p>欢迎您 <?php echo $_COOKIE['username']; ?>!</p>
<br>
<br>
<html lang="zh-CN"><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>退出登录</title>
<div class="logout-container"><h2>退出登录</h2><p>您确定要退出登录吗?退出后需要重新登录才能访问您的账户。</p><form action="logout-c.php" method="post"><button type="submit" class="logout-button">退出登录</button></form>
</div>
</body>
</html>

logout-c

<?php
setcookie("username", " ", time() - 3600);
setcookie("password", " ", time() - 3600);
header("location:admin-c.php");
exit;

amdin-s

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>后台登录</title>
</head>
<body>
<div style="text-align: center; margin-top: 100px;"><h2>后台登录</h2><form action=" " method="post" style="display: inline-block; text-align: left;"><div style="margin-bottom: 15px;"><label for="username" style="display: block; margin-bottom: 5px;">用户名:</label><input type="text" id="username" name="username" required style="width: 200px; padding: 5px;"></div><div style="margin-bottom: 15px;"><label for="password" style="display: block; margin-bottom: 5px;">密码:</label><input type="password" id="password" name="password" required style="width: 200px; padding: 5px;"></div><div style="text-align: center;"><button type="submit" style="padding: 10px 20px; background-color: #4CAF50; color: white; border: none; cursor: pointer;">登录</button></div></form><div style="margin-top: 15px;"><a href="#" style="color: #4CAF50; text-decoration: none;">忘记密码?</a></div>
</div>
</body>
</html><?php
include '../config.php';$user=@$_POST['username'];
$pass=@$_POST['password'];
$sql="select * from admin where username='$user' and password='$pass';";
$data=mysqli_query($con,$sql);
if($_SERVER['REQUEST_METHOD']=='POST'){//$_SERVER['REQUEST_METHOD']该变量中存储的是表单提交的方式。所以获取表单值if(mysqli_num_rows($data) > 0){session_start();$_SESSION['username']=$user;$_SESSION['password']=$pass;header('location:index-s.php');exit();}else{echo "<script>alert('登录失败')</script>";}
}

index-s

<?php
session_start();
if ($_SESSION['username']!='admin' && $_SESSION['username']!='123456'){header('location:admin-s.php');
}?>
<!DOCTYPE html>
<p>欢迎您 <?php echo $_COOKIE['username']; ?>!</p>
<br>
<br>
<html lang="zh-CN">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>退出登录</title>
<div class="logout-container"><h2>退出登录</h2><p>您确定要退出登录吗?退出后需要重新登录才能访问您的账户。</p><form action="logout-c.php" method="post"><button type="submit" class="logout-button">退出登录</button></form>
</div>
</body>
</html>

token

<?php
session_start();
$token = bin2hex(random_bytes(16));
//生成token,随机十六位字符串
$_SESSION['token'] = $token;
//将token保存到session之中
setcookie("token", $token, time() + 3600);
//将token绑定到cookie中
?><!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>后台登录</title>
</head>
<body>
<div style="text-align: center; margin-top: 100px;"><h2>后台登录</h2><form action="token-check.php" method="post" style="display: inline-block; text-align: left;"><input type="hidden" name="token" value="<?php echo $token; ?>"><div style="margin-bottom: 15px;"><label for="username" style="display: block; margin-bottom: 5px;">用户名:</label><input type="text" id="username" name="username" required style="width: 200px; padding: 5px;"></div><div style="margin-bottom: 15px;"><label for="password" style="display: block; margin-bottom: 5px;">密码:</label><input type="password" id="password" name="password" required style="width: 200px; padding: 5px;"></div><div style="text-align: center;"><button type="submit" style="padding: 10px 20px; background-color: #4CAF50; color: white; border: none; cursor: pointer;">登录</button></div></form><div style="margin-top: 15px;"><a href="#" style="color: #4CAF50; text-decoration: none;">忘记密码?</a></div>
</div>
</body>
</html>

jian

kang

ping

an

关键字:建筑工程网官网平台_深圳展厅设计装修_保定网站推广公司_销售清单软件永久免费版

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: