小迪安全23-php后台模块

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/23168.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(面试经典问题之连接池篇)连接池构成、作用及其基本原理详解

一、什么是连接池 连接池一般指的是数据库连接池&#xff08;connection pooling&#xff09;&#xff0c;是指程序启动时建立足够的数据库连接&#xff0c;并将这些连接组成一个连接池&#xff0c;由程序动态的对池中的连接进行申请&#xff0c;使用&#xff0c;释放&#xf…

Java+SpringBoot+Vue+数据可视化的综合健身管理平台(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 在当今社会&#xff0c;随着人们生活水平的不断提高和健康意识的日益增强&#xff0c;健…

echarts找不到了?echarts社区最新地址

前言&#xff1a;在之前使用echarts的时候&#xff0c;还可以通过上边的导航栏找到echarts社区&#xff0c;但是如今的echarts变更之后&#xff0c;就找不到echarts社区了。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 如今…

Jenkins 配置 Credentials 凭证

Jenkins 配置 Credentials 凭证 一、创建凭证 Dashboard -> Manage Jenkins -> Manage Credentials 在 Domain 列随便点击一个 (global) 二、添加 凭证 点击左侧 Add Credentials 四、填写凭证 Kind&#xff1a;凭证类型 Username with password&#xff1a; 配置 用…

【Nacos】从零开始启动Nacos服务(windows/linux)

文章目录 前言前置条件官方网址一、Nacos下载1.1 选择Nacos版本1.2 下载 二、解压2.1 解压到某个文件夹 三、 启动3.1 方式一&#xff1a;直接使用命令启动3.1.1 进入bin文件夹3.1.2 进入命令行工具3.1.3 执行命令 3.2 方式二&#xff1a;修改配置文件后启动3.2.1 修改启动脚本…

Microsoft 365 Copilot中使用人数最多的是哪些应用

今天在浏览Microsoft 365 admin center时发现&#xff0c;copilot会自动整理过去30天内所有用户使用copilot的概况&#xff1a; 直接把这个图丢给copilot让它去分析&#xff0c;结果如下&#xff1a; 总用户情况 总用户数在各应用中均为 561 人&#xff0c;说明此次统计的样本…

AI学习第一天-什么是AI

AI的发展可以被分为四次浪潮&#xff0c;这包括符号主义、机器学习与神经网络&#xff0c;以及深度学习。在这些发展中&#xff0c;深度学习凭借其在处理非结构化复杂数据、强大的学习能力和可解释性方面的优势备受关注。深度学习技术的应用不仅提升了AI系统的性能&#xff0c;…

计算机视觉:经典数据格式(VOC、YOLO、COCO)解析与转换(附代码)

第一章&#xff1a;计算机视觉中图像的基础认知 第二章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(一) 第三章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(二) 第四章&#xff1a;搭建一个经典的LeNet5神经网络(附代码) 第五章&#xff1…

解决本地模拟IP的DHCP冲突问题

解决 DHCP 冲突导致的多 IP 绑定失效问题 前言 续接上一篇在本机上模拟IP地址。 在实际操作中&#xff0c;如果本机原有 IP&#xff08;如 192.168.2.7&#xff09;是通过 DHCP 自动获取的&#xff0c;直接添加新 IP&#xff08;如 10.0.11.11&#xff09;可能会导致 DHCP 服…

安全生产月安全知识竞赛主持稿串词

女:尊敬的各位领导、各位来宾 男:各位参赛选手、观众朋友们 合:大家好&#xff5e; 女:安全是天&#xff0c;有了这一份天&#xff0c;我们的员工就会多一份幸福&#xff0c; 我们的企业就会多一丝光彩。 男:安全是地&#xff0c;有了这一片地&#xff0c;我们的员工就多了一…

JDBC学习

背景&#xff1a;主机正在运行mysql服务 在cmd输入 mysql -u root -p 之后&#xff0c;输入密码&#xff08;我的用户名是root&#xff0c;密码是root&#xff09;&#xff0c;成功登录到mysql。 输入&#xff1a;SHOW GLOBAL VARIABLES LIKE port; 检查mysql服务的端口号 …

前端js进阶,ES6语法,包详细

进阶ES6 作用域的概念加深对js理解 let、const申明的变量&#xff0c;在花括号中会生成块作用域&#xff0c;而var就不会生成块作用域 作用域链本质上就是底层的变量查找机制 作用域链查找的规则是:优先查找当前作用域先把的变量&#xff0c;再依次逐级找父级作用域直到全局…

IDEA通过Maven使用JBLJavaToWeb插件创建Web项目

第一步&#xff1a;IDEA下载JBLJavaToWeb插件 File--->Settings--->Plugins--->Marketplace搜索: JBLJavaToWeb 第二步&#xff1a;创建普通Maven工程 第三步&#xff1a; 将普通Maven项目转换为Web项目

在VSCode中接入deepseek

注册就送14元2000万tokens。 https://cloud.siliconflow.cn/i/rnbA6i6U各种大模型 下面介绍我是如如接入vscode的 左边生成一个key&#xff0c;呆会vscode要用&#xff0c;不然401. 打开vscod&#xff0c;电脑能上网。下插件。 下好要配置 点它一下。 要配置&#xff0c;全…

Mac端homebrew安装配置

拷打了一下午o3-mini-high&#xff0c;不如这位博主的超强帖子&#xff0c;10分钟结束战斗 跟随该文章即可&#xff0c;2025/2/19亲测可行 mac 安装HomeBrew(100%成功)_mac安装homebrew-CSDN博客文章浏览阅读10w次&#xff0c;点赞258次&#xff0c;收藏837次。一直觉得自己写…

安全启动(secure boot)怎么关闭_史上最全的各品牌机和组装机关闭安全启动教程

很多网友发现电脑BIOS设置中都有一个secure boot(安全启动)选项&#xff0c;而且一些预装win10或win11改Win7的教程中也有提到要把安全启动关闭&#xff0c;那么我们该怎么关闭安全启动呢&#xff1f;下面教大家各品牌机和组装机关闭安全启动教程。 secure boot该关还是开&…

C进阶 自定义类型

目录 前言 一 结构体 二 结构体的存储 三 位段 四 枚举 五 联合体 总结 前言 我们之前学习的int char double ......都是内置类型&#xff0c;但是我们今天所学习的是自定义类型&#xff0c;比如联合体&#xff0c;结构体&#xff0c;枚举 一 结构体 结构体是一…

STM32的HAL库开发---ADC采集内部温度传感器

一、STM32内部温度传感器简介 二、温度计算方法 F1系列&#xff1a; 从数据手册中可以找到V25和Avg_Slope F4、F7、H7系列只是标准值不同&#xff0c;自行查阅手册 三、实验简要 1、功能描述 通过ADC1通道16采集芯片内部温度传感器的电压&#xff0c;将电压值换算成温度后&…

【PyQt5】python可视化开发:PyQt5介绍,开发环境搭建快速入门

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Android 串口通信

引言 在iot项目中&#xff0c;Android 端总会有和硬件通信。 通信这里&#xff1a;串口通信&#xff0c;蓝牙通信或者局域网通信。 这里讲一下串口通信。 什么是串口&#xff1f; “串口”&#xff08;Serial Port&#xff09;通常是指一种用于与外部设备进行串行通信的接口。…