session

PHP反序列化漏洞总结

时光怂恿深爱的人放手 提交于 2020-03-01 03:32:30
又到了金三银四跳槽季,很多小伙伴都开始为面试做准备,今天小编就给大家分享一个网安常见的面试问题:PHP反序列化漏洞。 虽然PHP反序列化漏洞利用的条件比较苛刻,但是一旦被利用就会产生很严重的后果,所以很多公司都比较关注这个技能点,小伙伴们一定要掌握哦。 PHP序列化与反序列化介绍 什么是序列化与反序列化 维基百科中这样定义:序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。 概念很容易理解,其实就是将数据转化成一种可逆的数据结构,自然,逆向的过程就叫做反序列化。 那么序列化与反序列化有什么用处呢? 举个例子: 比如:现在我们都会在淘宝上买桌子,桌子这种很不规则的东西,该怎么从一个城市运输到另一个城市,这时候一般都会把它拆掉成板子,再装到箱子里面,就可以快递寄出去了,这个过程就类似我们的序列化的过程(把数据转化为可以存储或者传输的形式)。当买家收到货后,就需要自己把这些板子组装成桌子的样子,这个过程就像反序列的过程(转化成当初的数据对象)。 也就是说,序列化的目的是方便数据的传输和存储。 在PHP应用中,序列化和反序列化一般用做缓存,比如session缓存,cookie等。 常见的序列化格式: 二进制格式 字节数组

wamp下php无法保存SESSION问题总汇

独自空忆成欢 提交于 2020-03-01 00:26:27
由于是在windows 下的iis进行php的环境,所以很多情况下不能像lamp那么简单进行设置。由于工作原因我也遇到很多session无法保存的情况(在wamp下)。以下是相信信息的汇总,仅供参考学习。 1,php.ini设置问题,这类情况下需要设置 session_auto_start = on //这是自动开启session的 在php文档中输入 phpinfo 查看是否正确的开启了session。 2,保存session的文件夹有问题 首先查看php.ini中的session_save_path 是否存在,并且没有被注释掉,如果存在的话 一般在widnows中默认的为c:\windows\tmp 下,这目录默认是不允许其他用户读取的。 解决方案 1.设置 文件夹为 everyone 可读取 可写入 ,这样虽然可以解决问题,但是却产生了新的问题就是安全问题,因为是windows 下,可以进行注册表等其他信息的跨目录读取。 2.重新设置 session_save_path ,设置完成以后 重启iis 看是否成功 如果不成功的话 请设置两个,因为在php.ini中为了兼容以前的版本是有两个的 一个是被注释掉的 一个是 4.0以上 一个是5.0以上的。设置完成后,设置被设置的目录为everyone 读取 写入,然后继承,其他的都不要勾取,这样就保证了保存目录的安全和系统数据的安全。

关于 PHP 中 Session 的几个问题

女生的网名这么多〃 提交于 2020-02-29 23:16:17
什么是 Session 在 web 应用开发中,Session 被称为会话。主要被用于保存某个访问者的数据。 由于 HTTP 无状态的特点,服务端是不会记住客户端的,对服务端来说,每一个请求都是全新的。 既然如此,那么服务端怎么知道是哪个访问者在请求它呢?又如何将不同的数据对应上正确的访问者?答案是,给访问者一个唯一获取 Session 中数据的身份标示。 打个比方:当我们去超市购物时,被保安告之我们是不能带物品进去的,必须将物品寄放在超市的储物箱中。我们把物品交给了他,他怎么知道这些物品谁是谁的,于是他给了我们不同的钥匙。当我们要取走我们的物品时,用唯一的钥匙打开对应的箱子即可。 就如同上面的比方一样,可以将 Session 理解为存放我们数据的“箱子”,当然,这些“箱子”都在服务端那。服务器给访问者唯一的“钥匙”,这个“钥匙”被称作 session_id 。访问者凭借自己的 session_id,就能获取到自己存在服务器端的数据。 session_id 通过两种方式传给访问者(客户端):URL 或 cookie。详情参见: 传送会话ID Session 和 Cookie 有什么关系 Cookie 也是由于 HTTP 无状态的特点而产生的技术。也被用于保存访问者的身份标示和一些数据。每次客户端发起 HTTP 请求时,会将 Cookie 数据加到 HTTP header 中

Spring @SessionAttributes注解 @ModelAttribute注解

左心房为你撑大大i 提交于 2020-02-29 22:21:02
一、@SessionAttribute详解 如果 多个请求 之间需要 共享数据 ,就可以使用@SessionAttribute。 配置的方法: 在控制器类上标注@SessionAttribute。 配置需要共享的数据范围。 这样,就可以将model中的属性同步到session中了。 注意: 默认情况,SpringMVC会将model的数据存放在 request域 中。 此时,当一个请求结束之后,数据将会 失效 。 因此,当数据需要跨页面使用时,就需要将数据存放到 session 中。 @SessionAttributes就是将指定的model中的数据 拷贝 到session中。 使用方法: @SessionAttribute中, value 指定需要放入会话的 属性名称 。 type 指定需要放入会话的 属性类型 。 @SessionAttributes(types=User.class)会将model中所有类型为 User的属性添加到会话中。 @SessionAttributes(value={“user1”, “user2”}) 会将model中属性名为user1和user2的属性添加到会话中。 @SessionAttributes(types={User.class, Dept.class}) 会将model中所有类型为 User和Dept的属性添加到会话中。

java面试题笔记2015-08-20

社会主义新天地 提交于 2020-02-29 21:53:44
为了找到一份好的java工作,网上找来一份java面试题,对自己掌握的知识进行查缺补漏 2015-8-20 begin 1. 编写程序,完成文件复制功能 public static void copyFile(File srcFile,File destFile)throws IOException{ if(!srcFile.exists()){ throw new IllegalArgumentException("文件:"+srcFile+"不存在"); } if(!destFile.exists()){ throw new IllegalArgumentException(destFile+"不是文件"); } FileInputStream in = new FileInputStream(srcFile); FileOutputStream out = new FileOutputStream(destFile); byte[] buf = new byte[8 * 1024]; int bytes = 0; while((bytes = in.read(buf , 0 , buf.length))!= -1){ out.write(buf,0,bytes); out.flush(); } out.close(); in.close(); } /* * 文件 */

配置hibernate手动配置

醉酒当歌 提交于 2020-02-29 20:58:24
手动配置: 1.CROD 操作 界面 testmain.java Domain service 数据持久层 数据库 Mysql Oreacle Sqlserver ```` 2. 引用 hibernate jar 包 3. POJO 介绍 使用 hibernate 时 要求数据库的某张表相互对应的那个 java 类叫做 pojo 类 plain ordinary java objects 实际 就是普通的 javaBeans 使用 . 特点: 有一个主键属性 , 用于唯一标识该对象 有其他的属性 有对个个属操作的 getset 方法 属性一般的 private 修饰 一定要有一个无产的构造函数 (用于 hibernate 架构的反射作用) 对象关系映射文件 作用 与 domain 对象和类的映射关系 文件名的 规范 Domian 对象 bomm .xml 一般会放在 domain 对象统一文件夹下(同包下) 手动用户配置 domain 对象和表的映射关系 <? xml version = "1.0" encoding = "utf-8" ?> <!--该文件要清楚地表述出 类 和 表 的对应关系--> <! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http:/

Discuz 的 session 机制

落爺英雄遲暮 提交于 2020-02-29 19:50:51
discuz 没有用 php 内置的 session 机制,而是使用了自己的方式(并且每次初始化页面都会清空 $_SESSION 变量),这会让不了解的人产生迷惑。 discuz的session实现 discuz 使用两张内存表分别存储后台用户和前台用户数据,在数据库中可以看到有两个 SESSION 表: 一个是 pre_common_adminsession ,是管理员登录后台的 SESSION 表; 另一个是 pre_common_session 表,是所有用户在前台浏览页面时的 SESSION 表。 这两个表都是内存表(内存表的读写速度远高于 MYISAM 表及文本文件)。 获取 session 的引用 在 discuz 的根目录下建立测试文件,test.php,添加内容: <?php //由于没有使用 $_SESSION 变量,所以不需要 session_start() 函数。 // init discuz x3 require dirname(__FILE__). '/source/class/class_core.php'; $discuz = C::app(); $discuz->init(); //var_dump($_G); // for debug var_dump($discuz->session); // for debug // discuz x2 /*

CPU /磁盘I/O /内存

南笙酒味 提交于 2020-02-29 18:19:10
oracle的除了本身的性能外,另外系统的性能对oracle的运行也很关键,主要是CPU,磁盘I/O,内存,网络情况等。 CPU 一、cpu的检查 sar命令的使用: ossdb2: sar sar: 0551-201 Cannot open /var/adm/sa/sa11. sar: 0551-213 Try running /usr/lib/sa/sa1 <increment> <number> 出现如上所述错误信息说明系统没有建立收集sar报告数据的数据收集程序,按照如下所述的步骤 建立sar数据文件: 1.以root用户登陆后输入命令: su - adm ; 2.输入命令: crontab -e 3.移掉下面这些行前面的#(注释符)然后退出保存 : #0 8-17 * * 1-5 /usr/lib/sa/sa1 1200 3 & #0 * * * 0,6 /usr/lib/sa/sa1 & #0 18-7 * * 1-5 /usr/lib/sa/sa1 & #5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 3600 -ubcwyaqvm & 4.编辑/etc/rc文件,移掉下面一行前面的#(注释符): #/bin/su - adm -c /usr/lib/sa/sadc /usr/adm/sa/sa `date +%id`

spring安全框架Security(一)

老子叫甜甜 提交于 2020-02-29 18:08:39
现在很多企业和开发团队都使用了SSH2(Struts 2 +Spring 2.5 +Hibernate)框架来进行开发, 我们或许已经习惯了强大的Spring Framework 全局配置管理,不可否认,Sping是一个很优秀的开源框架,但是由于Spring3.0版本后强大的的注解式bean的诞生,Spring MVC框架这匹黑马正悄然杀起,但今天Spring MVC不是主角,今天我和大家分享一个同样隶属于 SpringSource 的安全框架—— Spring Security , 下面的基于Spring MVC给大家分享一下 Spring Security 的使用。 虽然对它的接触时间不长,参考了一些网上朋友的做法,但也按照我的理解把这个框架介绍介绍,不是很专业,还请大家不要介意 。 我们知道,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个资源来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。 首先,我们看web.xml Java代码 <?xml

01.MyBatis入门

穿精又带淫゛_ 提交于 2020-02-29 17:59:37
MyBatis入门: 第一天接触Mybatis,总结一下入门案例的流程: 首先导入Mybatis的jar包和数据库的驱动包 1.创建数据表和实体类 2.创建一个表和实体类映射的xml配置文件,具体配置如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <!-- namespace是映射文件的一个唯一标识,用来定位是哪个映射文件 --> 6 <mapper namespace="com.offcn.entity.personMapper"> 7 <!-- id是一条sql语句的唯一标识,parameterType是sql语句中的参数类型 ,resultType是sql语句将要返回的结果的类型 --> 8 <!-- 如果输入的类型是基本数据类型(八种基本数据类型 + string)则#{xxx}可以随意写,但是为了规范最好不要,如果不是基本数据类型则必须写实体类中的字段名 --> 9 <select id="selectPersonById" parameterType="int" resultType="com