1.session劫持

  动机:想要确保攻击者无法访问站点其他用户的session

  方案:只允许通过cookie来传递sessionID,同时生成一个由URL传递的额外的session记号(token),只有当请求包含有效的sessionID和有效的session记号时,才可以访问该session

  代码:

 1 <?php
 2 ini_set('session.use_only_cookies',true);
 3 session_start();
 4 $salt = '!@@##~~WEQQ';
 5 $tokenstr = (str)data('W').$salt;
 6 $token = md5($tokenstr);
 7 if(!isset($_REQUEST['token'])||$_REQUEST['token']!=$token){
 8     //提示登录
 9     exit;
10 }
11 $_SESSION['token'] = $token;
12 output_add_rewrite_var('token',$token);
13 ?>

  output_add_rewrite_var函数说明

官方:添加URL重写器的值(Add URL rewriter values)
说明:bool output_add_rewrite_var ( string $name , string $value )
此函数给URL重写机制添加名/值对。 这种名值对将被添加到URL(以GET参数的形式)和表单(以input隐藏域的形式),当透明URL重写用 session.use_trans_sid 开启时同样可以添加到session ID。 要注意,绝对URL(http://example.com/..)不能被重写。适用范围:(PHP 4 >= 4.3.0, PHP 5)

  如果你的php版本低于4.3.0,对不起这个方法还不能生效,不过不用着急,我们有替代方法

  上代码:

 1 <?php
 2 ini_set('session.use_only_cookies',true);
 3 session_start();
 4 $salt = '!@@##~~WEQQ';
 5 $tokenstr = (str)data('W').$salt;
 6 $token = md5($tokenstr);
 7 if(!isset($_REQUEST['token'])||$_REQUEST['token']!=$token){
 8     //提示登录
 9     exit;
10 }
11 $_SESSION['token'] = $token;
12 ob_start('inject_session_token');
13 function inject_session_token($buffer){
14     $hyperlink_pattern = "/<a[^>]+href=\"([^\"]+)/i";
15     preg_match_all($hyperlink_patten,$buffer,$matches);
16     foreach($matches[1] as $link){
17         if(strpos($link,"?")===false){
18             $newlink = $link.'?token='.$_SESSION['token'];
19         }else{
20             $newlink = $link.='&token='.$_SESSION['token'];
21         }
22         $buffer = str_replace($link,$newlink,$buffer);
23     }
24     return $buffer;
25 }
26 ?>

待续……

转载于:https://www.cnblogs.com/MRPUNK/archive/2013/04/11/3015744.html

有关session安全的那些事儿相关推荐

  1. 分布式系统里session同步

    几周前,有个盆友问老王,说现在有多台服务器,怎么样来解决这些服务器间的session同步问题?老王一下就来精神了,因为在n年以前,老王还在学校和几个同学一起所谓创业的时候,也遇到了类似的问题.当时查了 ...

  2. 让 Objective-C 框架与 Swift 友好共存的秘籍

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者:江湖人称 "七叔" 其实就 ...

  3. linux加硬盘方法,linux系统添加硬盘方法

    SQL SQL语句的增删改查 一.增:有2种方法 1.使用insert插入单行数据: 语法:insert [into] [列名] values 例:insert into Strdent ... Ma ...

  4. 2022面试200题目和答案分布式+微服务+MYSQL+Redis+JVM+Spring

    200题目和答案分布式+微服务+MYSQL+Redis+JVM+Spring等等 带图MD在资源https://download.csdn.net/download/m0_47987937/86509 ...

  5. cookie和session的那些事儿

    COOKIE介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 coo ...

  6. Cookie、Session、Token那点事儿

    前言:新公司项目中使用到了Cookie,在各大Android技术讨论群向前辈们取经讨论这cookie.session.token这仨哥们的时候,很多开发者说法不一各抒已见,所以是时候回顾下http基础 ...

  7. Cookie和Session、SessionID的那些事儿

    一.Cookie的定义 指某些网站为了辨别用户身份.进行session跟踪而存储在用户本地终端上的数据(通常经过加密).也就是说如果知道一个用户的Cookie,并且在Cookie有效的时间内,就可以利 ...

  8. [ web基础篇 ] session,cookie,token 那些事儿 ?

  9. Token ,Cookie、Session傻傻分不清楚?

    点击上方蓝色"视学算法",选择"设为星标" 作者 | 王菜鸟1993 来源 | cnblogs.com/JamesWang1993/p/8593494.html ...

  10. 深夜,我偷听到程序员要对session下手……

    我是一个web服务器 我是一个web服务器,我的工作是给人类提供上网服务,我每天要为数以万计的人提供网页浏览服务. 已经是深夜了,我还在和手下几个兄弟为了一件事紧张讨论着. "老大,现在咱们 ...

最新文章

  1. virtualC++打开汇编语言代码
  2. 3.递归猴子吃桃问题
  3. uml 类图_UML-类图
  4. c lambda表达式 select 改变字段名称_大神是如何学习 Go 语言之浅谈 select 的实现原理...
  5. VisualStudio卸载后无法再次安装的解决方法
  6. UVA11019 Matrix Matcher【hash傻逼题】【AC自动机好题】
  7. java父类的私有方法可以被继承吗_简单通俗的解释java中的继承
  8. 自定义UICollectionViewFlowLayout
  9. 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
  10. gan处理自己的数据集_使用StyleGAN训练自己的数据集.md
  11. 可正常访问的 高校2.5D 地图
  12. 架设国外服务器怎么维护,架设海外服务器流程分享
  13. 福特汉姆大学计算机科学专业,福特汉姆大学计算机科学专业
  14. 深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)
  15. 请收藏 Navicat 热门话题 | 精选
  16. Teamwork(The first day of the team)
  17. MSN Messenger聊天机器人颁奖典礼
  18. python autocad显示_通过Python打开Autocad的新实例
  19. 解决Windows7右键菜单出现乱码的详细步骤
  20. linux 自动隐藏任务栏_如何自动隐藏Windows任务栏

热门文章

  1. 【ANSYS命令流】为什么是命令流?
  2. 图像处理项目-车标识别
  3. k开头的英文单词计算机专业,带有k的英语单词
  4. 什么是量子加密(一)
  5. 「解决方案」5G基站电气监控云平台
  6. STM32:红外遥控接收模块
  7. 老友记第一季自学笔记01
  8. Arduino手自两用蓝牙避障小车
  9. neo4j社区版下载
  10. 谈一谈|如何写好一篇博客