4.php开发-个人博客项目&登录验证&cookie&session&验证码安全

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


目录

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全

知识点

本节大纲思路

——这里以我自己的为例——

cookie验证——————>

login1.php-登录后台界面

login_check.php-检查,作为包含文件

add_news.php-后台界面

php编码

如何创建 Cookie?--setcookie()

语法

实例 1

php header跳转

演示案例-cookie验证脆弱问题

session验证——————>

session/login.php-管理员登录界面

session/index.php-后台界面

验证码——————>

万能密码

验证码



知识点

1-后台验证-登录用户逻辑安全

2-后台验证-cookie&session

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

本节大纲思路

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全,php开发基础,php,后端,安全,网络安全,开发语言,mysql,html5


——这里以我自己的为例——

cookie验证——————>

login1.php-登录后台界面

——根目录下

————这里注意输入密码的时候一般就进行了MD5加密,——不管怎么样,提交的数据要与数据库中的一样!!!

——这里我就先不加密了(密码)

<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");
header("Content-type: text/html; charset=utf-8");
include('config/conn.php');
​
$username=$_POST['user'];
$password=($_POST['pass']);//注意MD5加密—————与数据库里的一样就行!!!
//echo $password;
$sql="select * from admins where username='$username' and password='$password'";
//echo $sql;
$result=mysql_query($sql,$conn);
if (mysql_num_rows($result)){
    echo '成功';
    header('Location: admin/add_news.php');
    setcookie('user',$username);
}
else{
    //echo '失败登录';
}
?>

——cookie设置的时候,在数据包里会携带账号密码;不然直接访问没有携带。

login_check.php-检查,作为包含文件

——放config下,检验用户的身份(为admin还是普通用户)

后台页面——先验证登录,才进行代码操作(防止直接访问)

<?php
$user=$_COOKIE['user'];
if($user != ''){        //单个验证,cookie可以修改,伪造,进行攻击。
    echo '这里就是后台文章添加的页面';
    }
    else{
        echo '你妹的,不能进入';
    }
?>

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全,php开发基础,php,后端,安全,网络安全,开发语言,mysql,html5

add_news.php-后台界面

———放admin目录下,admin登录时验证(包含了验证文件)

<?php
header("Content-Type:text/html;charset=utf-8");
//先验证登录,再进行代码操作。
//1-cookie验证
//2-session验证
​
//cookie验证
include("../config/login_check.php");
?>

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全,php开发基础,php,后端,安全,网络安全,开发语言,mysql,html5


php编码

php 编码 ---解决乱码问题

php utf-8编码:(php页面为url) header("Content-type: text/html; charset=utf-8");

php gbk编码: header("Content-type: text/html; charset=gb2312");

php big5编码 (繁体): header("Content-type: text/html; charset=big5");

如何创建 Cookie?--setcookie()

PHP Cookie | 菜鸟教程

setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于 <html> 标签之前。

语法

setcookie(name, value, expire, path, domain);

实例 1

在下面的例子中,我们将创建名为 "user" 的 cookie,并为它赋值 "runoob"。我们也规定了此 cookie 在一小时后过期:

<?php
setcookie("user", "runoob", time()+3600);
?>
​
<html>
.....

注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码。(为防止 URL 编码,请使用 setrawcookie() 取而代之。)

php header跳转

php的header函数_php header-CSDN博客

header('Location: RM新时代-首页'); //跳转到一个新的地址

演示案例-cookie验证脆弱问题

(熊海cms)

抓包后在cookie上面修改

——登录后,发现地址栏出现了传参,————所以我们给他修改一下——r=index————直接跳转到登录成功的界面。

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全,php开发基础,php,后端,安全,网络安全,开发语言,mysql,html5

————显然不行,可能cookie没有通过,

——抓包之后——看cookie

源代码:

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全,php开发基础,php,后端,安全,网络安全,开发语言,mysql,html54.php开发-个人博客项目&登录验证&cookie&session&验证码安全,php开发基础,php,后端,安全,网络安全,开发语言,mysql,html5

——————呵呵,这里直接修改一下cookie就行了

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全,php开发基础,php,后端,安全,网络安全,开发语言,mysql,html5

——进入后台。

白盒嘿嘿嘿~

黑盒测试就在cookie上面不断伪造就行了........

————注意cookie的存活时间,他是储存到浏览器里面的。

cookie盗取:

人家登录状态,伪造一下,xss利用盗取cookie。

无痕浏览不会储存...


session验证——————>

(打电话一样,一方挂了就没了,变了。)一旦PHPSESSID断了,就没了,

会话劫持。————人家正在浏览器浏览,没有断,才能干到。

——登录一次就产生一次,储存在服务器。

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全,php开发基础,php,后端,安全,网络安全,开发语言,mysql,html5

xxxSESSIONID --->session验证,和cookie没联系了;专注session!

session/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=$_POST['pass'];//注意密码加密
$sql="select * from admins where username='$username' and password='$password'";
$result=mysql_query($sql,$conn);
while($row=mysql_fetch_array($result)){//成功登录后
    session_start();//产生创建一个会话。
    $_SESSION['user'] = $row['username'];//将查询结果的值进行赋值。
    header('Location: index.php');//跳转url,----------这里要特定指向,形成前后关联啊。--------------
}
?>

session/index.php-后台界面

<?php
​
header("Content-Type:text/html;charset=utf-8");
session_start();
$username=$_SESSION['user'];
​
if($username=='admin'){
    echo '欢迎登陆管理员首页!';
}else{
    echo "session,您不是管理员";
}
?>


验证码——————>

万能密码

万能密码大全-CSDN博客

' ' OR 1=1#

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全,php开发基础,php,后端,安全,网络安全,开发语言,mysql,html5

注释符(过滤掉后边的) ---> #

or 或者 ,两边只要有一个真就行。

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全,php开发基础,php,后端,安全,网络安全,开发语言,mysql,html5

验证码

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);
?>

f.php ---引用了验证码code.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();
}
?>

——验证码正确才能进入循环——再看账号密码

防爆破攻击 ------每一次登录验证码都要变!!!

抓包,看看验证码是否为一次性~

验证码识别———文章来源地址https://www.toymoban.com/news/detail-817258.html

到了这里,关于4.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日
    浏览(17)
  • Node.js | 详解 Cookie-Session登录验证 的工作原理

    🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 🖥️ 本系列专栏:Node.js从入门到精通 👉 你的一键三连是我更新的最大动力❤️! 📢 欢迎私信博主加入前端交流群🌹 目前绝大多数的系统都少不了 登录验证 的功能,这主要是为了保存用户的状态,以此来限制用户的各种行

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

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

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

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

    2024年02月15日
    浏览(25)
  • 如何在个人web项目中使用会话技术(cookie&session)?

    编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 服务器软件:apache-tomcat-8.5.27 翻开百度百科关于“ 会话 ”的词条,它是这样描述:“ 在计算机术语中,会话是指一个终端用户与交互系统进行通讯的过程,比如从输入账户密码进入操作系统到退出操作系统就是一

    2023年04月22日
    浏览(15)
  • 小迪安全 第14天:php开发-个人博客项目&输入输出类&留言板&访问IP&UA头来源

    1.PHP-全局变量$_SERVER 2.MYSQL-插入语法INSERT 3.输入输出-XSS反射存储 4.安全问题-XSS跨站CSRF等 导入sql文件:navicat导入sql数据库文件的简单操作步骤_sql文件怎么导入navicat-CSDN博客①搜索框: ② php代码: ③结果  ④总结 在输入输出过程中有哪些安全问题:1.sql注入 2. XSS (在搜索框

    2024年04月26日
    浏览(13)
  • Cookie vs Session:Web开发中的身份验证之争

    本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远! 当涉及到Web开发和用户身份验证时,Cookie和Session是两个常见的概念。它们在存储和管理用户状态方

    2024年02月14日
    浏览(9)
  • 用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程

    🧸注:不要看我的文件多,那是我的其他项目,这个项目所用的文件我会全部用红框框起来,没框的部分不用管,前端两个文件,后端一个文件 📜 🧸欢迎来到dream_ready的博客,📜相信你对这篇博客也感兴趣o (ˉ▽ˉ;) 表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后

    2024年02月06日
    浏览(9)
  • Qt+QtWebApp开发笔记(四):http服务器使用Session和Cookie实现用户密码登录和注销功能

      前面实现了基础的跳转,那么动态交互中登录是常用功能。   本篇实现一个动态交互的简单登录和注销功能,在Qt中使用Session和Cookie技术。        链接:https://pan.baidu.com/s/1nkmsHgr-11Khe9k6Ntyf_g?pwd=1234     Web应用程序通常处理用户输入。将开发一个登录表单,看看

    2024年02月06日
    浏览(25)
  • 「PHP系列」PHP Cookie/Session详解

    在PHP中,Cookie是一种用于在浏览器和服务器之间传递信息的机制。它通常用于跟踪用户的会话状态、存储用户的偏好设置或实现其他需要跨请求保持状态的功能。 名称和值 :每个Cookie都有一个名称和一个值,用于标识和存储信息。 过期时间 :可以设置Cookie的过期时间,以便

    2024年04月23日
    浏览(9)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包