渗透测试入门学习——php与mysql数据库连接、使用session完成简单的用户注册、登录

关于cookie、session和sessionid:

cookie是保存在用户浏览器的令牌,在用户访问网站时,网站可取出用户cookie中存放的内容来识别用户身份,用于会话的sessionid就存放其中

session是用户访问网站时,网站服务器为用户生成的会话对象,存储在网站服务器中,在网站多个页面之间跳转时用来识别用户身份以及前保存用户的各种状态信息,例如登录成功的状态、访问各个页面的权限、某个页面某种功能的权限等等

sessionid 相当于一个会话的身份证,用户访问网站在服务器为用户生成 session的同时会生成一个和它对应 的sessionid ,加密后返回给用户浏览器,保存在浏览器的cookie 中,当用户离开网站,也就是结束会话后再次访问网站时,网站就可取出cookie中存放的sessionid查找到对应session,恢复与用户之间的会话

大致流程:

最终效果:

用户不点击注销主动销毁session便可一直访问登录成功页面: 

登陆后可在浏览器控制台用document.cookie查看cookie中保存的sessionid: 

校验用户session进行登录(文件名为session.php):
<?phpsession_start();if ($_SESSION["login"] == true) {echo "您已经成功登陆<a href='logout.php'>点击注销</a>";}else {$_SESSION["login"] == false;die("您无权访问,<a href='login.php'>点击跳转登录页面</a>");}
?>
销毁用户session进行登出(文件名为logout.php):
<?phpsession_destroy();header('Location:login.php');
?>
与mysql连接(文件名为connect_mysql.php):
<?php$servername = "localhost";$username = "root";$password = "root";$db_name = "test";$table_name = "userinfo";// 创建连接$con_mysql = mysqli_connect($servername, $username, $password);$con_db = mysqli_connect($servername, $username, $password, $db_name);// 检测连接数据库是否成功if (!$con_mysql) {die("连接失败: " . mysqli_connect_error());}else{echo "mysql服务器连接成功</br>";if(mysqli_connect($servername, $username, $password, $db_name)){echo "数据库$db_name"."已经存在";}else{echo "开始自动创建数据库</br>";$mysql_exec = "create database ".$db_name;mysqli_query($con_mysql, $mysql_exec);echo "数据库创建成功</br>";$create_table = "create table if not exists `$table_name`(`id` INT UNSIGNED AUTO_INCREMENT,`user` VARCHAR(10) NOT NULL,`password` VARCHAR(10) NOT NULL,PRIMARY KEY ( `id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;";$con_db = mysqli_connect($servername, $username, $password, $db_name);mysqli_query($con_db, $create_table);echo "数据表创建成功</br>";}}
?>
登录页面(文件名为login.php): 
<?phpinclude("connect_mysql.php");$username = $_POST['username'];$password = $_POST['password'];$select = "select user,password from $table_name where user='$username' and password='$password';";$reslust = mysqli_query($con_db, $select);if(mysqli_num_rows($reslust)){session_start();$_SESSION['login'] = true;$_SESSION['username'] = $username;header('Location:welcome.php');}else{session_start();$_SESSION['login'] = false;if(!(empty($username) && empty($password))){$login_msg = "登陆失败";}}
?><html>
<head><meta charset=utf-8>
</head> 
<h1>欢迎访问!请输入账号密码登录</h1> 
<form action="#" method="post" ></br><input type="text" name="username"> </br><input type="password" name="password"> </br><input type="submit"> 
</form>
<a href="signup.php">点击注册</a></br>
<?php echo $login_msg ?>
</html>
登录成功页面(文件名为welcome.php): 
<?phpinclude('session.php');
?><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登陆成功页面</title>
</head>
<body><h1>欢迎您的到来!</h1><?php echo "当前登录用户:".$_SESSION['username'] ?>
</body>
</html>
 注意:

单纯的拼接sql语句存在sql注入漏洞,在网站无回显的情况下可用盲注手法对网站进行渗透测试

网站的警告信息最好不要输出,避免被猜测出业务逻辑

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

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

相关文章

Ubuntu 24.04中安装virtualenv

在Ubuntu 24.04中安装virtualenv&#xff0c;可以按照以下步骤进行&#xff1a; 1. 确保Python已安装‌&#xff1a; 在终端中输入python --version或python3 --version来检查Python的安装情况。 python3 --version2. 安装pip‌&#xff08;如果尚未安装&#xff09;&#x…

第159天:安全开发-Python-协议库爆破FTPSSHRedisSMTPMYSQL等

案例一: Python-文件传输爆破-ftplib 库操作 ftp 协议 开一个ftp 利用ftp正确登录与失败登录都会有不同的回显 使用ftplib库进行测试 from ftplib import FTP # FTP服务器地址 ftp_server 192.168.172.132 # FTP服务器端口&#xff08;默认为21&#xff09; ftp_po…

【Linux取经之路】Linux项目自动化构建工具-make/makefile git三板斧

目录 关于make和makefile 一个案例 make和makefile的使用 makefile的基本语法 git的使用 关于make和makefile make是 Linux 系统中广泛使用的一个自动化构建工具&#xff0c;它根据用户定义的规则&#xff08;通常保存在一个名为 makefile的文件中&#xff09;来自动编译…

Maya---机械模型制作

材质效果&#xff08;4&#xff09;_哔哩哔哩_bilibili 三角面 四边面 多边面 *游戏允许出现三角面和四边面 游戏中一般是低模&#xff08;几千个面&#xff09; 动漫及影视是高模 机械由单独零件组合而成&#xff0c;需独立制作 低面模型到高面模型 卡线是为了将模型保…

UE5学习笔记22-武器瞄准和武器自动开火

0、一些疑问的记录 1.UUserWidget类和AHUD类的区别。两者都是关于界面显示的类。 实践&#xff1a; 想让界面和用户有交互使用UUserWidget&#xff0c;如果不要交互只是显示使用AHUD类&#xff0c;例如使用UUserWidget类制作开始界面&#xff0c;游戏开始&#xff0c;游戏设置&…

深度学习之图像数据集增强(Data Augmentation)

文章目录 一、 数据增强概述二、python实现传统数据增强参考文献 一、 数据增强概述 数据增强&#xff08;Data Augmentation&#xff09;是一种技术&#xff0c;通过对现有数据进行各种变换和处理来生成新的训练样本&#xff0c;从而增加数据集的多样性和数量。这些变换可以是…

C#使用TCP-S7协议读写西门子PLC(五)-测试程序

上面四篇我们进行封装连接PLC以及读写PLC内存地址表 C#使用TCP-S7协议读写西门子PLC(一)-CSDN博客 C#使用TCP-S7协议读写西门子PLC(二)-CSDN博客 C#使用TCP-S7协议读写西门子PLC(三)-CSDN博客 C#使用TCP-S7协议读写西门子PLC(四)-CSDN博客 这里我们进行测试操作 西门子PLC-…

[JAVA]介绍怎样在Java中通过字节字符流实现文件读取与写入

一&#xff0c;初识File类及其常用方法 File类是java.io包下代表与平台无关的文件和目录&#xff0c;程序中操作文件和目录&#xff0c;都可以通过File类来完成。 通过这个File对象&#xff0c;可以进行一系列与文件相关的操作&#xff0c;比如判断文件是否存在&#xff0c;获…

floodfill+DFS(2)

文章目录 太平洋大西洋流水问题扫雷游戏迷路的机器人 太平洋大西洋流水问题 class Solution { public:vector<vector<int>> res;int m 0, n 0;vector<vector<int>> pacificAtlantic(vector<vector<int>>& heights) {m heights.size…

珠宝首饰检测系统源码分享

珠宝首饰检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

在 Python 中使用 JSON

了解如何在 Python 中使用 JSON&#xff0c;从基础到高级技术。本指南涵盖解析、序列化、API 集成和最佳实践。 1. JSON 简介 1.1. 什么是 JSON&#xff1f; JSON&#xff08;JavaScript 对象表示法&#xff09;是一种轻量级数据交换格式&#xff0c;人类可以轻松读取和写入…

mongoDB-1

文章目录 一、疑似坑1.11.2 mongo ops manager1.3 mongo features视图固定大小集合&#xff08;有点类似ringbuffer数据结构&#xff0c;capped collections&#xff09;(聚簇集合)clustered collection(类比到Mysql的聚簇索引)聚合管道 aggregation pipelineWiredTiger (默认存…

uniapp微信小程序用户授权方法

效果 步骤 1&#xff09;div标签 <button type"primary" class"btn-login" click"getUserInfo">一键登录</button>2&#xff09;js方法 methods: {getUserInfo() {console.log("aaaa")uni.getUserProfile({desc: Wexin, …

iPhone 上丢失了重要的联系人?如何恢复已删除的 iPhone 联系人

丢失 iPhone 上的联系人可能会带来灾难。无论是一份很棒的新工作机会、潜在的恋爱对象&#xff0c;还是您一直想打电话的老朋友&#xff0c;如果您打开“联系人”应用时看到空白&#xff0c;这绝不是好事。不过&#xff0c;一切并非全无&#xff0c;仍然可以通过备份或专业软件…

Mamba对UNet王炸升级!全新混合架构参数小了116倍,精度依旧完成超车

UNet又升级了&#xff01;北大最新提出LightM-UNet&#xff0c;用Mamba设计1.8M参数UNet&#xff0c;比nnU-Net小了116倍&#xff0c;计算量减少21倍&#xff0c;精度依然SOTA&#xff01; 这种将Mamba与UNet结合的策略利用了两者在图像处理和网络架构上的优势&#xff0c;既能…

Renesas R7FA8D1BH (Cortex®-M85)控制SHT20

目录 概述 1 硬件接口介绍 2 SHT20模块 2.1 SHT20简介 2.2 SHT-20模块电路 3 I2C接口实现 3.1 FSP配置I2C 3.2 I2C驱动程序实现 4 SHT20驱动程序 4.1 SHT20驱动代码结构 4.2 源代码文件 5 测试 5.1 测试功能介绍 5.2 测试代码实现 5.3 运行代码 概述 本文主要介…

持续集成与持续交付CI/CD

CI/CD 是指持续集成&#xff08;Continuous Integration&#xff09;和持续部署&#xff08;Continuous Deployment&#xff09;或持续交付&#xff08;Continuous Delivery&#xff09; 持续集成&#xff08;Continuous Integration&#xff09; 持续集成是一种软件开发实践&…

BFS 解决边权为1的最短路问题

边权为1的最短路问题 最短路问题&#xff1a; 比如说从D->K&#xff0c;找出最短的那条&#xff0c;其中每条路都是有权值&#xff0c;此篇主要讲解的边权为1的最短路问题。 即边权都是一样的。 解法就是从起点开始&#xff0c;做一次BFS&#xff1a; 需要一个队列、一个…

Spring-IOC容器-ApplicationContext

IOC:Inversion of Control 控制反转&#xff0c;是一种设计原则&#xff0c;spring 中通过DI&#xff08;dependency Injection&#xff09;来具体实现。 比如原本对象的实例化&#xff0c;是通过程序主动New出来&#xff0c;IOC中的对象实例交给Spring框架来实例化&#xff0…

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0917)

七、引入 element-ui 组件库 官方文档&#xff1a; https://element-plus.org/zh-CN/ 安装 $ pnpm add element-plus自动按需&#xff1a; 安装插件 pnpm add -D unplugin-vue-components unplugin-auto-import然后把下列代码插入到你的 Vite 或 Webpack 的配置文件中 ..…