小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全

这篇具有很好参考价值的文章主要介绍了小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

知识点

1.后台验证-登录用户逻辑安全-怎么去判定用户登陆成功

2.后台验证-COOKIE&SESSION

3.后台验证-验证码·&万能密码等

思路:

1.发送登录请求 账号 密码

2.接收账号密码

3.判断账号密码的准确性

正确 成功登陆->跳转成功页面

错误 失败登录->重新登陆

后台管理系统有多个文件页面,为了方便,一般会选用cookie或session进行验证

cookie:身份验证 存储到客户端浏览器内

cookie安全:cookie修改 伪造 盗取

session:身份验证 存储到服务端服务器内

session安全:会话劫持(session劫持)

 cookie验证

php-解决乱码:header("Content-type: text/html; charset=utf-8");

账号密码存储在syguestbook中的sy_adminuser中

①验证及跳转

login.php

<form action="" method="POST">

    帐号:<input type="text" name="user">
    密码:<input type="password" name="pass">
    <input type="submit" value="提交">

</form>
<?php
header("Content-Type:text/html;charset=utf-8");
include('../config/conn.php');
$username=$_POST['user'];
$password=md5($_POST['pass']);//数据库里密码经过md5加密后存储,所以这里要用md5加密
//echo $password;
$sql="select * from sy_adminuser where username='$username' and password='$password'";
echo $sql;
$result=mysql_query($sql,$conn);
if (mysql_num_rows($result)){           //mysql_num_rows判断行数
    setcookie('user',$username,0,'/');
    header('Location: index.php');
}

index.php 

<?php
//先验证登录。才进行代码的操作
header("Content-Type:text/html;charset=utf-8");
$user=$_COOKIE['user'];
if ($user==""){
    header("Location: login.php");
    exit;
}else{
    echo "欢迎登陆管理员首页!";
}

 小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全,安全

小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全,安全此时右键页面检查会发现已有cookie

注意:header不能放在else里,否则会无线访问导致错误 

 ②在config目录下创建login_check.php,内容为index.php,然后在index.php里进行包含

③案例:xhcms(熊海)

1.下载网站:访问localhost/xhcms/insatll进行相关配置

2.访问localhost/xhcms/admin输入任意账号密码登录,地址变为localhost/xhcms/admin/?r=login

进行更改,localhost/xhcms/admin/?r=index,显然cookie没有通过访问不了,这时用burpsuite进行抓包,更改Cookie为“user=1”

 小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全,安全

 3.forward之后直接进入控制台小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全,安全

 4.源代码

小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全,安全

 黑盒测试的话就在cookie上尝试进行修该

白盒测试(有代码)直接设置

cookie盗取:cookie储存在自己的浏览器里,如果这个时候别人利用xss漏洞获取用户cookie就可以直接登录了

 Session验证

session验证相当于打电话,登陆之后相当于接了个电话,一旦关闭浏览器会话就终止了(每次登陆重新生成PHPSESSION)

会话劫持:人家正在浏览器浏览,没有关闭,这时候获取的session是有效的,就可以伪造登录,如果他关了,那么获取到的session就没有任何价值

session登陆一次就产生一次

xxxSESSIONID-->是session验证,和cookie没关系,跟它说拜拜了

1.session验证

<form action="" method="POST">

    帐号:<input type="text" name="user">
    密码:<input type="password" name="pass">
    <input type="submit" value="提交">

</form>
<?php
header("Content-Type:text/html;charset=utf-8");
include('../config/conn.php');

$username=$_POST['user'];
$password=md5($_POST['pass']);
$captcha=$_POST['captcha'];
//echo $password;
$sql="select * from sy_adminuser where username='$username' and password='$password'";
echo $sql;
$result=mysql_query($sql,$conn);
while($row=mysql_fetch_array($result)){ //成功登录后
    session_start();
    $_SESSION['username'] = $row['username'];//将查询结果的数据进行赋值
    //echo $_SESSION['username'];
    header('Location: index.php');
}

2.index.php

<?php

header("Content-Type:text/html;charset=utf-8");
session_start();
$username=$_SESSION['username'];
if($username=='admin'){
    echo '欢迎登陆管理员首页!';
}else{
    echo "请登录后访问!";
}

 验证码&万能密码

1.万能密码(sql注入)

万能密码大全-CSDN博客

小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全,安全

 假或真=真    #为数据库里的一个注释符(相当于忽略)

SELECT * FROM `sy_adminuser` where username='' or 1=1#  and password='dsadsaa';

小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全,安全 

 小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全,安全

 此时会直接进入首页

2.验证码(防止爆破)

1.code.php

<?php
session_start();//必须位于脚本的最顶端
$image=imagecreatetruecolor(100, 30);//imagecreatetruecolor函数建一个真彩色图像
//生成彩色像素
$bgcolor=imagecolorallocate($image, 255, 255, 255);//白色背景     imagecolorallocate函数为一幅图像分配颜色
$textcolor=imagecolorallocate($image,0,0,255);//蓝色文本
//填充函数,xy确定坐标,color颜色执行区域填充颜色
imagefill($image, 0, 0, $bgcolor);
$captch_code="";//初始空值

//该循环,循环取数
for($i=0;$i<4;$i++){
    $fontsize=6;
    $x=($i*25)+rand(5,10);
    $y=rand(5,10);//位置随机
    //  $fontcontent=$i>2?chr(rand(97,122)):chr(rand(65,90));//是小写,否则是大写
    $data='abcdefghijkmnpqrstuvwxyz3456789';
    $fontcontent=substr($data,rand(0,strlen($data)-1),1);
    $fontcolor=imagecolorallocate($image,rand(0,100),rand(0,100),rand(0,100));//随机的rgb()值可以自己定

    imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); //水平地画一行字符串
    $captch_code.=$fontcontent;
}
$_SESSION['authcode']=$captch_code;//将变量保存再session的authcode变量中


//该循环,循环画背景干扰的点
for($m=0;$m<=600;$m++){

    $x2=rand(1,99);
    $y2=rand(1,99);
    $pointcolor=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));
    imagesetpixel($image,$x2,$y2,$pointcolor);// 水平地画一串像素点
}

//该循环,循环画干扰直线
for ($i=0;$i<=10;$i++){
    $x1=rand(0,99);
    $y1=rand(0,99);
    $x2=rand(0,99);
    $y2=rand(0,99);
    $linecolor=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));
    imageline($image,$x1,$y1,$x2,$y2,$linecolor);//画一条线段

}
header('content-type:image/png');
imagepng($image);
//销毁
imagedestroy($image);
?>

2.f.php

<!DOCTYPE html>
<html lang="en">
<head>
    <!-- 简单的表单提交代码 -->
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>简单验证码的实现</title>
</head>
<body>
<form method="post" action="">
    帐号:<input type="text" name="user">
    密码:<input type="password" name="pass">
    <p>验证码图片:<img src="code.php" onClick="this.src='code.php?nocache='+Math.random()" style="cursor:hand" alt="点击换一张"/>点击图片可更换验证码</p>
    <p>请输入图片中的内容:<input type="text" name="authcode" value=""/></p>
    <p><input type="submit" width="20px" height=19px value="提交"></input></p>
</form>

</body>
</html>

<?php
include('config/conn.php');
header("Content-type: text/html; charset=utf-8");
// session 存值并匹配用户输入值
if (isset($_REQUEST['authcode'])) {
    session_start();
    if (strtolower($_REQUEST['authcode'])==$_SESSION['authcode']) {//strtolower转化为小写的函数
        echo"输入正确!";
        $username=$_POST['user'];
        $password=md5($_POST['pass']);
        $sql="select * from sy_adminuser where username='$username' and password='$password'";
        $result=mysql_query($sql,$conn);
        if(mysql_num_rows($result)){
            $row=mysql_fetch_array($result);
            echo '成功!';
            session_start();
            $_SESSION['user']=$row['username'];//讲查询结果的数据进行赋值
            header("Location: admin/add_news.php");
        }else{
            echo '失败!';
            //header("Location: login.php");
        }
        # code...
    }
    else{
        echo"输入错误!";
    }
    exit();
}
?>

 小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全,安全

 验证码正确才能进行下一步——看账号密码

 问题:验证码复用

用burpsuite抓包,发送到repeater模块,保持验证码正确不断更改密码直到成功

这个过程就相当于爆破

防爆破攻击:-每一次登录验证码都要变,否则有没有验证码没有区别

 文章来源地址https://www.toymoban.com/news/detail-852115.html

到了这里,关于小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1.php开发-个人博客项目&文章功能显示&数据库操作&数据接收

    (2022-day12) 1-php入门,语法,提交 2-mysql 3-HTML+css ​ 博客-文章阅读功能初步实现 实现功能: 前端文章导航,点入内容显示,更改ID显示不同内容 实现步骤: 1-前端页面显示,编写(html,css) 2-数据库文章数据导入(mysql操作) 3-php操作mysql编写-php变量提交 ​ 搜:html横向导

    2024年01月20日
    浏览(58)
  • 2.php开发-个人博客项目&文件操作类&编辑器&上传下载删除读写

    ​ ​ ​ 文件上传类: form表单上传文件 --文件上传,--php接收,处理 action ---提交给谁处理 move函数移到文件 ---文件上传漏洞啊!!! ——ueditor 实现编辑器的加载 上传文件的方法: 用了编辑器,就要用编辑器去验证了(编辑器没漏洞,那就没漏洞——他有问题就有问题,

    2024年01月21日
    浏览(48)
  • 个人博客系统 -- 登录页面添加图片验证码

    目录 1. 功能展示 2. 前段代码 3. 后端代码 在登录页面添加验证码登录 1. 检测到没有输入验证码或者输入的验证码错误时,进行弹窗提示.并且刷新当前验证码图片 2. 点击验证码进行刷新   1. 添加验证码标签,在密码的下面,在login.html进行修改 主要改动如下: 2. 在提交的函数中加

    2024年02月15日
    浏览(56)
  • 小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例

    #研究对象 PHP代码漏洞(代码问题) # 知识点: 1 、过滤函数缺陷绕过 2 、 CTF 考点与代码审计 一、原理-缺陷函数-使用讲解-本地 内置函数: 大部分是比较函数(过滤时使用的函数) (1)、== 与 === : 参考: PHP 浅谈 == 和=== 中,数字和字符串比较的问题。_php 数字==字符串

    2024年01月19日
    浏览(55)
  • 【Node.js实战】一文带你开发博客项目之登录(前置知识)

    个人简介 👀 个人主页: 前端杂货铺 🙋‍♂️ 学习方向: 主攻前端方向,也会涉及到服务端 📃 个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀 未来打算: 为中国的工业软件事业效力n年 🥇 推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2Vue3项目实战 🥝

    2024年02月21日
    浏览(50)
  • 大学生PHP个人博客网站源码 简单个人动态网站设计模板 PHP毕业设计成品 学生PHP MYSQL日志管理系统网页

    PHP MYSQL个人博客网站作品使用php+mysql开发,系统编码简单,大学生PHP毕业设计水平。系统随处可见增删改查等基本操作,有批量删除之功能,涉及的知识点比较全面。 数据库共6张数据表,表之间有关联,设计合理;系统具有管理员和会员两种用户角色,管理员(即日志的所

    2024年02月12日
    浏览(74)
  • 个人博客网站实现微信扫码登录(新)

            在不久之前(两年前)我写了一篇同名的博客《个人博客网站实现微信扫码登录(附源码)》,当时只是做一个记录而已。但是没想到会收到很多“猿友”的私聊, “代码跑不起来”、“实现原理”、“测试网址访问不了” 等各种问题。我也都一一解答了。趁着这

    2024年02月08日
    浏览(59)
  • php版个人博客管理系统源码(文末有下载方式)

    大家好, 我是程序猿零壹。 给大家分享一款个人博客管理系统,该系统使用php+mysql开发,分为前台和后台两部分。前台实现了博客展示、友情链接、热门标签、快捷搜索、关于作者等功能;后台实现了博客管理、轮播管理、友链管理、标签管理、留言管理、权限管理等功能

    2024年02月11日
    浏览(63)
  • python爬虫_selenuim登录个人markdown博客站点

    大家好,我是yma16,本文分享python使用selenuim登录个人markdown博客站点。 该系列文章: python爬虫_基本数据类型 python爬虫_函数的使用 python爬虫_requests的使用 python爬虫_selenuim可视化质量分 python爬虫_django+vue3可视化csdn用户质量分 python爬虫_正则表达式获取天气预报并用echarts折线

    2024年02月16日
    浏览(46)
  • 【个人博客系统网站】我的博客列表页 · 增删改我的博文 · 退出登录 · 博客详情页 · 多线程应用

    【JavaEE】进阶 · 个人博客系统(4) 用户在网页中编写标题和正文,点击提交,选择 输入摘要 取消,继续编写文章 提交成功后,选择 继续写文章 返回“我的博客列表页” 1.1 约定前后端交互接口 后端: /art/publish 将前端传递过来的数据保存到数据库 返回受影响行数 前端:

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包