cookie

csrf与xss

烈酒焚心 提交于 2019-12-23 00:56:30
CSRF 攻击攻击原理及过程如下: 1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A; 2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A; 3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B; 4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A; 5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。 防御CSRF攻击: (1)验证 HTTP Referer 字段 (2)在请求地址中添加 token 并验证 (3)在 HTTP 头中自定义属性并验证 扩展:     SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够 请求到与它相连而与外网隔离的内部系统)   SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制

Django中的视图(view)

[亡魂溺海] 提交于 2019-12-23 00:39:28
视图 1.什么是视图   视图就是Django项目下的view.py文件,它的内部是一系列的函数或者是类,用来专门处理客户端访问请求后处理请求并且返回相应的数据,相当于一个中央情报处理系统 2.具体视图实例 3.CBV和FBV   视图文件中除了上面的用一系列的函数来对应处理客户端请求的数据逻辑外,还可以通过定义类来处理相应的逻辑,首先第一步 要想真正让CBV的方式凑效,光在视图文件中改动是不够的 所以才CBV模式下,我们可以自定义dispatch方法,来控制之下真正的方法之前之后的一些行为,达到装饰器的效果! Request对象和Response对象 request对象   当一个页面数据被请求时,Django就会将请求的所有数据自动传递给约定俗称的request这个参数,而我们只需要拿到这个参数并对其进行一系列的操作即可获得所有与操作有关的数据 1.操作request对象的相应方法 path_info 返回用户访问url,不包括域名 method 请求中使用的HTTP方法的字符串表示,全大写表示。 GET 包含所有HTTP GET参数的类字典对象 POST 包含所有HTTP POST参数的类字典对象 body 请求体,byte类型 request.POST的数据就是从body里面提取到的 属性 属性:   django将请求报文中的请求行、头部信息、内容主体封装成

RESTful身份验证

故事扮演 提交于 2019-12-22 20:02:27
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> RESTful身份验证的含义是什么?它是如何工作的? 我无法在Google上找到一个很好的概述。 我唯一的理解是你在URL中传递会话密钥(remeberal),但这可能是非常错误的。 #1楼 我怀疑那些热心地喊“HTTP身份验证”的人是否尝试过用REST创建一个基于浏览器的应用程序(而不是机器到机器的Web服务)(没有冒犯的意图 - 我只是觉得他们没有遇到过复杂的问题) 。 我在RESTful服务上使用HTTP身份验证时发现的问题是生成可在浏览器中查看的HTML页面: 用户通常会得到一个丑陋的浏览器制作的登录框,这对用户不友好。 你不能添加密码检索,帮助框等。 以不同的名称注销或登录是一个问题 - 浏览器将继续向站点发送身份验证信息,直到您关闭窗口 超时很难 铲球这些逐点非常有见地的文章是 在这里 ,但是这导致了 很多 特定浏览器的JavaScript两轮牛车,变通办法变通办法,等等的。 因此,它也不是向前兼容的,因此在发布新浏览器时需要不断维护。 我不认为干净清晰的设计,而且我觉得这是一项额外的工作和头痛,所以我可以热情地向我的朋友展示我的REST徽章。 我相信cookie是解决方案。 但等等,饼干是邪恶的,不是吗? 不,他们不是,饼干经常使用的方式是邪恶的。 Cookie本身只是一条客户端信息

Jmter实现跨线程组共享cookie

元气小坏坏 提交于 2019-12-22 18:47:18
Jmter实现跨线程组共享cookie 测试需要登录的接口时,只需要在一个线程组中添加http cookie管理器就可以实现。此时进行压测,比如用户并发数100 ,相当于调用100次登录接口和100次需测试接口。但是在实际场景中,只需要调用1次登录接口,此时需要把登录和被测接C用多线程分开,并实现多线程共享cookie。 解决方法 1.创建setup线程,添加登录的http请求、添加察看结果树,执行后在结果树中查看登录接口返回的cookie。返回形式有两种:Response headers、Response body。本文讲解返回的cookie在Response headers中。有些会用token ,返回在response body。 2.在登录的http请求下创建后置处理器- -正则表达式提取器,提取headers中的cookie信息。 引用名称: jsession 正则表达式: Set-Cookie:(.*) 模板: $ 1$ 匹配数字: 1 缺省值: error 3.添加取样器-调试取样器,用于校验正则表达式取到的cookie是否正确。( 运行后可查看到) .4.确认cokkie取值正确后,在登录请求下添加后置处理–BeanShel后置处理程序。将cookie值改为全局量,如图。 格式: $ {_ setProperty(转换成全局变量后的引用名 ,$

Java系列001 HttpClientUtil帮助类

女生的网名这么多〃 提交于 2019-12-22 16:58:46
自己写的Java模拟请求帮助类 1、包含header头构造 2、会话session维持 3、使用HttpClient 完整版见 资源下载链接 package com . back . util ; import java . io . File ; import java . nio . charset . Charset ; import java . util . ArrayList ; import java . util . Iterator ; import java . util . List ; import java . util . Map ; import java . util . Map . Entry ; import org . apache . http . HttpEntity ; import org . apache . http . HttpResponse ; import org . apache . http . HttpStatus ; import org . apache . http . NameValuePair ; import org . apache . http . client . entity . UrlEncodedFormEntity ; import org . apache . http . client .

过滤器Filter

瘦欲@ 提交于 2019-12-22 08:00:32
一、过滤器Filter 1.filter的简介 filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目 标资源访问前后进行逻辑处理 2.快速入门 步骤:(与servlet使用方法差不多) 1)编写一个过滤器的类实现Filter接口 2)实现接口中尚未实现的方法(着重实现doFilter方法) 3)在web.xml中进行配置(主要是配置要对哪些资源进行过滤) 先运行filter,再运行servlet filter的访问流程 filter能干什么 1.设置request 例子 set encoding 用于所有 servlet 2.权限 request取出角色 3.Filter的API详解 (1)filter生命周期及其与生命周期相关的方法 Filter接口有三个方法,并且这个三个都是与Filter的生命相关的方法 init(Filterconfig):代表filter对象初始化方法 filter对象创建时执行 doFilter(ServletRequest,ServletResponse,FilterCha):代表filter执行过滤的核心方法,如果某资源在已经被配置到这个filter进行过滤的话,那么每次访问这个资源都会执行doFilter方法 doFilter中的request 参数类型 ServletRequest 和

分布式集群的Session问题

霸气de小男生 提交于 2019-12-22 04:46:50
1、 Session的实现 在Session开始时候,分配一个唯一的Session标识 sessionId ,通过 Cookie 把 sessionId 告诉浏览器,以后每次请求的时候,浏览器都会带上 sessionId 告诉web服务器,这个请求属于哪个Session。 在web 服务器上,每个Session都有独立的存储,保存不同的Session信息。 如果遇到禁用Cookie的情况,一般做法是把sessionId方法 放到 URL 参数中。 2、集群的Session 问题的解决方案 因为Session数据保存在单机上,当应用服务器变成多台之后,要保证对用户透明。 (1)、Session 粘贴 负载均衡器根据每次请求的Session进行转发,即保证同一Session请求都在同一台Web 服务器上处理,那么对这个Session个体来说,与之前安单机的情况是一致的。 优点 :简单容易实现,有利于服务器端本地对Session进行缓存。 缺点 :(a)、如果集群上有一台服务器down,则上面的Session数据全部丢失,用户需要重新登录。 (b)、负载均衡器需要解析Session的请求,开销很大 (c)、负载均衡器变成了有状态的节点,内存消耗大,容灾麻烦。 (2)、Session 复制 Web服务器进行Session数据同步,即同一个Session的数据会复制到所有的Web服务器上。

分布式系统session一致性问题

空扰寡人 提交于 2019-12-22 04:46:32
一、引言 1.什么是session Session 是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理。最常见的,会把用户的登录信息、用户信息存储在 session 中,以保持登录状态。 2.session的创建 在会话开始时,分配一个唯一的会话标识 SessionID(sessionid 是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个 session, 有一个 sessionId 和它对应。),并通过 Cookie 将这个标识告诉浏览器(客户端会将 sessionID 保存在 cookie 中。), 以后每次请求的时候,浏览器都会带上这个会话标识SessionID来告诉Web服务器这个请求是属于哪个会话的。 在Web服务器上,各个会话都有独立的存储,保存不同会话的信息。如果遇到禁用Cookie的情况, 一般的做法就是把这个会话标识放到URL的参数中。 3.session共享 分布式情况下,如果每台服务器都session存在自己的内存中,不同服务器之间就会造成数据不一致问题, 这时候就需要session共享。单机情况下,不存在Session共享的情况。分布式情况下, 如果不进行Session共享会出现数据不一致,比如:会导致请求落到不同服务器要重复登录的情况。 二、解决方案 1.session复制 应用服务器开启web容器的session复制功能

asp.net core 2.0 cookie的使用

删除回忆录丶 提交于 2019-12-22 04:11:52
本文假设读者已经了解cookie的概念和作用,并且在传统的.net framework平台上使用过。 cookie的使用方法和之前的相比也有所变化。之前是通过cookie的add、set、clear、remove方法操作的。asp.net core对cookie的操作提供了新方法,不需要注入什么服务,也不需要使用什么中间件,直接在代码中使用即可。具体请看下面的介绍。 设置cookie: 定义:void Append(string key, string value); 使用:Response.Cookies.Append(_key, "subendong"); 读取cookie: 定义:public abstract IRequestCookieCollection Cookies { get; set; } 使用:var username = Request.Cookies["username"]; 说明:很明显Cookies是个键值对的集合,该集合继承了IEnumerable<KeyValuePair<string, string>>和 Ienumerable两个接口。 删除cookie: 定义:void Delete(string key); 使用:Response.Cookies.Delete(_key); 说明: 同一个web项目在部署到多台机器时(集群)

asp.net core Cookie认证

喜夏-厌秋 提交于 2019-12-22 04:11:33
  实现基于Cookie的认证,新建一个core mvc项目   新建一个admin控制器标记Authorize,用来测试认证 [Authorize] public class AdminController : Controller { public IActionResult Index() { return View(); } }   在ConfigureServices中注入cookie ,为了方便调试这里设置了LoginPath地址,并且指向了认证的地方。在mvc的前面需要加上cookie和认证 public void ConfigureServices(IServiceCollection services) { //注入cookie 认证 services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options=> {          //options.LoginPath = "/Account/Login";          options.AccessDeniedPath = "/Account/Login"; //没有权限访问时的地址           } ); services.AddMvc(); } public void