引言:我的系列博客[网络安全学习篇]上线了,小编也是初次创作博客,经验不足;对千峰网络信息安全开源的视频公开课程的学习整理的笔记整理的也比较粗糙,其实看到目录有300多集的时候,讲道理,有点怂了,所以我就想到了通过写博客(课程笔记)的形式去学习它,虽然写博客会让我多花几倍的时间去学习它,但是当我完成一篇博客所获得的成就感和你们对于我的认同感,让我很满足,能够鼓励我一天天的坚持下去,也希望和我一起学习本期视频的"同道"们也能给一直坚持下去。我们大家一起加油。由于作者本身也是网络信息安全小白,大部分知识点都是初次接触,出现对其理解不深入,不完整,甚至也会出现错误有问题的地方,希望大家谅解、留言提出指正,同时也欢迎大家来找我一起交流学习!!!
往期博客:
第一阶段:
[网络安全学习篇1]:windowsxp、windows2003、windows7、windows2008系统部署(千峰网络安全视频笔记)
[网络安全学习篇24]:漏洞与木马(千峰网络安全视频笔记 p117-p118)
第二阶段:
第三阶段:
[网络安全学习篇34]:python文件对象对文件内容进行读取和写入
[网络安全学习篇36]:python 面向对象编程思想(本篇)
[网络安全学习篇37]:基于面向对象思想的Python爬虫实例
[网络安全学习篇42]:靶场环境搭建(ubuntu系统安装优化及vulhub安装)
[网络安全学习篇43]:PHP基础+变量 运算符 流程控制语句
[网络安全学习篇46]:PHP COOKIE 和 SESSION(本篇)
下期博文:
[网络安全学习篇47]:PHP与Mysql交互 注册功能实现 PHP个人中心 留言实现
目录
会话控制
浏览网页的时候,使用的是HTTP协议
客户端发送请求
服务的给出相应
COOKIE
存储在客户端的一段文本,文件|字符串(大多数情况下,字符串)
服务器发给客户端
每次客户端浏览器 在发出请求的时候,自动都会携带Cookie信息
键值对
cookie性质
name Cookie的名称
value Cookie的值
expire 过期时间
path Cookie的有效路径
domain Cookie的域名
secure https
httponly 仅仅通过http 协议访问,不能通过JS访问
设置Cookie的语句
setcookie();
接受Cookie 的信息
$_COOKIE
窃取和欺骗
浏览器Cookie 信息
F12(存储器)
session 机制
依赖Cookie实现
session id
session_start();
$_SESSION 完成对SESSION 数据的读写
源码:
1.php(设置Cookie)
<?php
setcookie("name","GGG");
?>
2.phphc($_COOKIE)
<?php
var_dump($_COOKIE);
?>
使用Cookie实现对用户登录的验证
index.php
<meta charset="utf-8">
<h1>刹那芳华论坛</h1>
<?php
if(isset($_COOKIE['name'])){
echo "欢迎您,{$_COOKIE['name']}<a href='./logout.php'>注销</a>";
}else{
echo "<a href='./login.php'>请登录</a>";
}
?>
login.php
<meta charset="utf-8">
<?php
if(isset($_POST['userSubmit'])){
if(
isset($_POST['userName']) &&
$_POST['userName'] == "GGG" &&
isset($_POST['userPass']) &&
$_POST['userPass'] == "123456"
){
if(setcookie("name","GGG")){
echo "登录成功,<a href='./index.php'>返回首页</a>";
}else{
echo "设置Cookie错误!";
}
}else{
echo "用户或密码错误,<a href='./login.php'>请重新登录</a>";
}
}else{
$html=<<<HTML
<form
action=""
method="post"
>
用户名:<input type="text" name="userName"><br />
密码:<input type="password" name="userPass"><br />
<input type="submit" name="userSubmit" value="登录">
</form>
HTML;
echo $html;
}
?>
logout.php
<meta charset="utf-8">
<?php
setcookie("name",$_COOKIE['name'],time()-3600);
echo "已注销,<a href='./index.php'>返回首页</a>";
?>
进入首页(index.php)
登录(login.php)
注销(logout.php)
Cookie存在的风险实验
窃取Cookie,直接登入
在一个浏览器上登入
打开另外一个浏览器
现在,我们将第一个浏览器的页面注销,cookie信息被清空
但在另一个浏览器上没有收到任何影响
1.php(开启session机制)
<?php
session_start();//开启session 机制
$_SESSION['name']="GGG";
$_SESSION['age']=24;
?>
会在服务器端生成一个文件:
相比之下session要相对安全
2.php()
<?php
session_start();
var_dump($_SESSION);
?>
打开服务器端的sess文件,会看到里面存放了我们前面设置的信息
使用session机制实现用户登入验证
index.php
<?php
session_start();//session_start()建议写在最前面
?>
<meta charset="utf-8">
<h1>刹那芳华论坛</h1>
<?php
if(isset($_SESSION['userName']) && $_SESSION['userName'] ==
"GGG"){
echo "欢迎您,{$_SESSION['userName']}
<a href='./logout.php'>注销</a>";
}else{
echo "<a href='./login.php'>请登录</a>";
}
?>
login.php
<?php
session_start();
echo "<meta charset='utf-8'>";
?>
<?php
if(isset($_POST['userSubmit'])){
if(
isset($_POST['userName']) &&
isset($_POST['userPass']) &&
$_POST['userName'] == "GGG" &&
$_POST['userPass'] == "123456"
){
$_SESSION['userName'] = $_POST['userName'];
echo "登录成功,<a href='./index.php'>返回首页</a>";
}else{
echo "用户或密码错误,<a href='./login.php'>请重新登录</a>";
}
}else{
$html=<<<HTML
<form
action=""
method="post"
>
用户名:<input type="text" name="userName"><br />
密码:<input type="password" name="userPass"><br />
<input type="submit" name="userSubmit" value="登录">
</form>
HTML;
echo $html;
}
?>
logout.php
<?php
session_start();
session_destroy();
echo "<meta charset='utf-8'>已注销,<a href='./index.php'>返回首页</a>";
?>
在服务器端,生成一个与session值相对应的文件,文件为空
登录成功
再来看我们服务器端的sess文件,存入了登录验证信息
返回首页
注销
与之对应的在服务器端,sess文件被清空删除
session安全性实验
通样我们在另一个浏览器上打开,利用sess值登入测试
服务器端与之对应的sess值文件中存入信息
打开另外一个浏览器,生成新的sess值
替换前面的sess值
刷新:直接就进去了
当我们在第一个浏览器上注销之后
在另一一个浏览器上使用前面的sess值就会失效
因为服务器端与之对应的sess文件内容已被清空,整个sess值失效了
因此,我们日常生活中也应该要重视注销这一环节,随手注销首个好习惯!
参考文献: