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&验证码安全_第1张图片


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

cookie验证——————>

login1.php-登录后台界面

——根目录下

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

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

​    帐号:    密码:    

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

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

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

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

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全_第2张图片

add_news.php-后台界面

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

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全_第3张图片


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() 函数必须位于 标签之前。

语法

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

实例 1

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


​

.....

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

php header跳转

php的header函数_php header-CSDN博客

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

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

(熊海cms)

抓包后在cookie上面修改

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

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

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

——抓包之后——看cookie

源代码:

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全_第5张图片4.php开发-个人博客项目&登录验证&cookie&session&验证码安全_第6张图片

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

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全_第7张图片

——进入后台。

白盒嘿嘿嘿~

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

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

cookie盗取:

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

无痕浏览不会储存...


session验证——————>

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

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

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

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

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

   帐号:    密码:    
   

session/index.php-后台界面


验证码——————>

万能密码

万能密码大全-CSDN博客

' ' OR 1=1#

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全_第8张图片

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

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

4.php开发-个人博客项目&登录验证&cookie&session&验证码安全_第9张图片

验证码

code.php ---生成验证码

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




    
    
    
    
    简单验证码的实现


帐号: 密码:

验证码图片:点击换一张点击图片可更换验证码

请输入图片中的内容:

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

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

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

验证码识别———

你可能感兴趣的:(php开发基础,php,网络安全,安全,html5,前端,后端)