session

HTTPS中TLS/SSL的握手过程

半城伤御伤魂 提交于 2020-02-27 09:05:09
1,非对称加密技术 非对称加密算法需要两个密钥,公开密钥(publickey)和私有密钥(privatekey);公钥和私钥是成对出现的。 非对称加密例子:B想把一段信息传给A,步骤:1)A把公钥传给B;2)B拿到A的公钥并利用此密钥给信息加密;3)B把加密的信息传给A;4)A利用私有密钥对加密信息进行解密即可得到B想给自己的信息。 (这个过程叫做密码传输,即B把信息加密后传给A) 问题:如果有个捣乱的冒充B,也用A的公钥给一段信息加密,并传给A,A再私钥解密得到的信息就会误认为是B的。 要解决此问题,B需要给A传个验证信息,让A可以验证自己受到的信息是B传的。该验证信息即下面的数字摘要(数字指纹) 2,数字摘要技术 该技术主要利用了哈希函数的两个特性:1)单向性;2)计算结果位数固定 数字摘要是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。“数字摘要“是https能确保数据完整性和防篡改的根本原因。 3,数字签名技术 数字签名技术既利用了数字摘要(数字指纹)技术也利用了非对称加解密技术 。 数字签名过程 :1)B利用哈希函数得到上面传输信息的哈希值;2)B利用私钥给哈希值加密(注意:这里的非对称加密(私钥加密,公钥解密

Listener 监听器

浪尽此生 提交于 2020-02-27 09:04:39
1、Listener的定义与作用   监听器Listener就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。   Listener是Servlet的监听器,可以监听客户端的请求,服务端的操作等。 2、Listener的分类与使用   主要有以下三类:    1、ServletContext监听   ServletContextListener:用于对Servlet整个上下文进行监听(创建、销毁)。 public void contextInitialized(ServletContextEvent sce);//上下文初始化 public void contextDestroyed(ServletContextEvent sce);//上下文销毁 public ServletContext getServletContext();//ServletContextEvent事件:取得一个ServletContext(application)对象   ServletContextAttributeListener:对Servlet上下文属性的监听(增删改属性)。 public void attributeAdded(ServletContextAttributeEvent scab);//增加属性

memcached、cookie、session

不羁的心 提交于 2020-02-27 07:05:47
Memcached(一个高性能的分布式的内存对象缓存系统)   可用来分担数据库的压力。通过在内存里维护一个统一的巨大的hash表,memcached能存储各种各样的数据,包括图像、视频、文件、以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。 适用:存储验证码(图形验证码、短信验证码)、登录session等所有不是至关重要的数据。 安全性: 使用 -l 参数设置为只有本地可以连接:这种方式,就只能通过本机才能连接,别的机器都不能访问,可以达到最好的安全性。 使用防火墙,关闭11211端口,外面也不能访问。 django中使用需在 settings.py 中配置好缓存; 添加 KEY_FUNCTION 参数:django在存储数据到memcached中的时候,可自定义前缀。 1 # 配置memcached缓存; 2 CACHES = { 3 'default': { 4 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 5 # 可指定多个连接:['172.19.26.240:11211','172.19.26.242:11211',] 6 'LOCATION': '127.0.0.1:11211', 7 'KEY_FUNCTION': lambda key

BugKu 变量1

走远了吗. 提交于 2020-02-27 06:54:07
题目链接 这是一道代码审计。 flag In the variable ! <?php error_reporting(0); include "flag1.php"; highlight_file( file ); if(isset($_GET['args'])){ $args = $_GET['args']; if(!preg_match("/^\w+$/",$args)){ die("args error!"); } eval("var_dump($$args);"); } ?> 抓住两个地方,一个是正则表达式匹配,不匹配则直接die,该正则表达式应该是匹配都是字母的串。然后最关键的是最后的$$args,这是可变变量的意思,如$args的值是另一个变量的变量名。那么$$args就代表另一个变量。所以我们就给args赋值一个变量名,那么PHP的九大全局变量,一个一个试。 $_POST [用于接收post提交的数据] $_GET [用于获取url地址栏的参数数据] $_FILES [用于文件就收的处理img 最常见] $_COOKIE [用于获取与setCookie()中的name 值] $_SESSION [用于存储session的值或获取session中的值] $_REQUEST [具有get,post的功能,但比较慢] SERVER[是预定义服务器变量的一种

session 、cookie、token的区别

你离开我真会死。 提交于 2020-02-27 06:37:17
session session的中文翻译是“会话”,当用户打开某个web应用时,便与web服务器产生一次session。服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。 cookie cookie是保存在本地终端的数据。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。 cookie的组成有:名称(key)、值(value)、有效域(domain)、路径(域的路径,一般设置为全局:"\")、失效时间、安全标志(指定后,cookie只有在使用SSL连接时才发送到服务器(https))。下面是一个简单的js使用cookie的例子: 用户登录时产生cookie: document.cookie = "id="+result.data['id']+"; path=/"; document.cookie = "name="

session 、cookie、token的区别

我只是一个虾纸丫 提交于 2020-02-27 06:36:51
session session的中文翻译是“会话”,当用户打开某个web应用时,便与web服务器产生一次session。服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。 cookie cookie是保存在本地终端的数据。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。 cookie的组成有:名称(key)、值(value)、有效域(domain)、路径(域的路径,一般设置为全局:"\")、失效时间、安全标志(指定后,cookie只有在使用SSL连接时才发送到服务器(https))。下面是一个简单的js使用cookie的例子: 用户登录时产生cookie: document.cookie = "id="+result.data['id']+"; path=/"; document.cookie = "name="

PHP表单提交错误后返回内容消失问题

爷,独闯天下 提交于 2020-02-27 04:27:51
今日发现一个问题,用户如果提交表单后,不符合要求返回,表单信息老是没有。把我郁闷坏了,我明明记得最开始做此功能的时候,是可以恢复表单状态的。经过网上查找,原来是由于我使用了session_start函数的原因,这个函数会强制当前页面不被刷新,解决方法就是在此函数后加入 header("Cache-control: private"),同时注意在本行之前你的PHP程序不能有任何输出。 还有基于session的解决方法,在session_start前加上 session_cache_limiter('nocache');// 清空表单 session_cache_limiter('private'); //不清空表单,只在session生效期间 session_cache_limiter('public'); //不清空表单,如同没使用session一般 不过从别人博客上看到如果直接设置session会使seesion出现cache的现象,从而导致当你应用到session的地方会出现session信息不能更新的问题。 记录于此,省得下次忘了。这也提醒了我,该时候花个时间好好的把PHP手册当教科书一样从头到尾最少看一遍。 补充: 第一,使用Header方法设置消息头Cache-control 1 header('Cache-control: private, must

如何在PHP应用程序中使用多线程

柔情痞子 提交于 2020-02-27 02:35:49
是否有一种实际的方法可以在PHP中实现多线程模型,无论是真正的还是仅对其进行仿真。 一段时间以前,建议您可以强制操作系统加载PHP可执行文件的另一个实例并处理其他同时进行的进程。 这样做的问题是,当PHP代码完成执行PHP实例后,它仍保留在内存中,因为无法从PHP中杀死它。 因此,如果您正在模拟多个线程,则可以想象会发生什么。 因此,我仍在寻找一种可以在PHP中有效完成或模拟多线程的方法。 有任何想法吗? #1楼 可用的PHP中没有线程,但是可以通过将HTTP请求用作异步调用来进行并发编程。 将curl的超时设置设置为1,并对要彼此关联的进程使用相同的session_id,则可以与会话变量进行通信,如下例所示。 使用这种方法,您甚至可以关闭浏览器,并发进程仍在服务器上。 不要忘记像这样验证正确的会话ID: http://localhost/test/verifysession.php?sessionid = [ 正确的ID] startprocess.php $request = "http://localhost/test/process1.php?sessionid=".$_REQUEST["PHPSESSID"]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $request); curl_setopt($ch,

吴裕雄--天生自然轻量级JAVA EE企业应用开发Struts2Sping4Hibernate整合开发学习笔记:Hibernate_bidirectional_1-1FK

风流意气都作罢 提交于 2020-02-26 23:57:52
<?xml version="1.0" encoding="GBK"?> <project name="hibernate" basedir="." default=""> <property name="src" value="src"/> <property name="dest" value="classes"/> <path id="classpath"> <fileset dir="../../../lib"> <include name="**/*.jar"/> </fileset> <pathelement path="${dest}"/> </path> <target name="compile" description="Compile all source code"> <delete dir="${dest}"/> <mkdir dir="${dest}"/> <copy todir="${dest}"> <fileset dir="${src}"> <exclude name="**/*.java"/> </fileset> </copy> <javac destdir="${dest}" debug="true" includeantruntime="yes" deprecation="false" optimize="false"

吴裕雄--天生自然轻量级JAVA EE企业应用开发Struts2Sping4Hibernate整合开发学习笔记:Hibernate_1-N(composite-id)

核能气质少年 提交于 2020-02-26 23:47:12
<?xml version="1.0" encoding="GBK"?> <project name="hibernate" basedir="." default=""> <property name="src" value="src"/> <property name="dest" value="classes"/> <path id="classpath"> <fileset dir="../../lib"> <include name="**/*.jar"/> </fileset> <pathelement path="${dest}"/> </path> <target name="compile" description="Compile all source code"> <delete dir="${dest}"/> <mkdir dir="${dest}"/> <copy todir="${dest}"> <fileset dir="${src}"> <exclude name="**/*.java"/> </fileset> </copy> <javac destdir="${dest}" debug="true" includeantruntime="yes" deprecation="false" optimize="false" failonerror=