cookie

cookie和session

余生颓废 提交于 2019-12-05 17:32:56
cookie和session 用户登录, 未登录不能访问指定页面 基于cookie实现 保存在用户浏览器端的键值对, 向服务端发请求时会自动携带 def login(request): # 设置cookie data = redirect('...') data.set_cookie() # 读取cookie request.COOKIES.get('xx') return data cookie的三个参数: key,value='',max_age=None 应用场景: 用户认证 投票 每页默认显示多少数据 基于session实现(推荐) 依赖cookie 是一种存储数据的方式, 依赖于cookie, 实现本质: 用户向服务端发送请求, 服务端做两件事: 生成随机字符串; 为此用户开辟一个独立的空间来存放当前用户独有的值. 在空间中如何设置值: request.session['x1'] = 123 request.session['x2'] = 456 在空间中取值: request.session['x2'] (没有数据会报错) request.session.get('x2') 视图函数中的业务操作处理完毕, 给用户响应, 在响应时会将随机字符串存储到用户浏览器的cookie中. 应用场景: 用户认证 短信验证过期 权限管理 session中数据是根据用户相互隔离的 通过

CSRF攻击

余生颓废 提交于 2019-12-05 17:21:59
CSRF攻击能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于cookie中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的cookie来通过安全验证。 关键是验证授权用户和发起请求者是否是同一个人。 要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中 由于Cookie中的信息是自动带上的,攻击者就是利用了这一点,因此只需要请求中(比如header中)还有其他需要验证的信息即可,只要不要攻击者纯粹利用自动带上的cookie就能通过验证就行。 CSRF 令牌 。 可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有token或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。这种方法要比检查 Referer 要安全一些,token 可以在用户登陆后产生并放于session之中,然后在每次请求时把token 从 session 中拿出,与请求中的 token 进行比对 X-CSRF-Token 。 除了将 CSRF 令牌作为 POST 参数进行验证外,还可以通过设置X-CSRF-Token请求头来实现验证,VerifyCsrfToken 中间件会检查 X-CSRF-TOKEN 请求头,首先创建一个

Urllib库

[亡魂溺海] 提交于 2019-12-05 17:04:39
python 之 Urllib库的基本使用 官方文档 https://docs.python.org/3/library/urllib.html 什么是Urllib Urllib是python内置的HTTP请求库 包括以下模块 urllib.request 请求模块 urllib.error 异常处理模块 urllib.parse url解析模块 urllib.robotparser robots.txt解析模块 urlopen 关于urllib.request.urlopen参数的介绍: urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) url参数的使用 先写一个简单的例子: import urllib.request response = urllib.request.urlopen('http://www.baidu.com') print(response.read().decode('utf-8')) urlopen一般常用的有三个参数,它的参数如下: urllib.requeset.urlopen(url,data,timeout) response.read()可以获取到网页的内容,如果没有read(

requests库

泄露秘密 提交于 2019-12-05 17:04:24
python中requests库使用方法详解 官方文档 requests的具体安装过程请看:http://docs.python-requests.org/en/latest/user/install.html#install requests的官方指南文档:http://docs.python-requests.org/en/latest/user/quickstart.html requests的高级指南文档:http://docs.python-requests.org/en/latest/user/advanced.html#advanced 什么是Requests Requests 是⽤ ython语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库。它⽐ urllib 更加⽅便, 可以节约我们⼤量的⼯作,完全满⾜HTTP测试需求。 ⼀句话——Python实现的简单易⽤的HTTP库 安装Requests库 进入命令行win+R执行 命令:pip install requests 项目导入:import requests 各种请求方式 直接上代码,不明白可以查看我的urllib的基本使用方法 import requests requests.post('http://httpbin.org/post') requests.put(

网页很卡的原因

丶灬走出姿态 提交于 2019-12-05 16:31:55
打开开发者工具看network里的瀑布图。 原因一:http请求次数太多 解决:减少http请求次数 ① 图片地图:把多张图片整合到一张图片中,以位置定位超链接。 ② CSS Sprites合并图片,通过指定CSS的backgroud-image和backgroud-position来显示元素。 ③ 合并JS脚本和CSS样式表。 ④ 使用外部JS和CSS文件。 原因二:接收数据时间过长,如下载资源过大 解决:对HTTP传输进行压缩,即在js,css、图片等资源已经压缩的基础上,在HTTP传输过程中的再次压缩。客户端可以通过Accept-Encoding头来声明浏览器支持的压缩方式,服务端通过Content-Encoding来启用压缩,配置压缩的文件类型,压缩方式。gzip使用无损压缩,压缩效果最佳,已经成为使用最为普遍、支持的浏览器最多的数据压缩格式。 原因三:JavaScript脚本过大,阻塞了页面的加载 解决:将JavaScript脚本放在标签前。script没有async和defer时,JS文件将在下载后立即执行。这种情况下,script放在顶部会阻塞页面呈现,在网速慢的情况下会导致“白屏”,直到脚本下载完毕才继续呈现页面。因此,script放在底部可以让页面尽快呈现。 https://blog.csdn.net/zhouziyu2011/article/details

Spring cloud微服务安全实战-3-12session固定攻击防护

試著忘記壹切 提交于 2019-12-05 16:28:17
getSession这个方法里面的逻辑,会根据传过来的cookie里面带的JSessionID在你的服务器上去找一个session,如果能找到,就用这个已经存在的session,这个getSession就返回这个已经存在的session吗,如果没有找到就创建一个新的session并返回回来。这句是getSession里面的逻辑 根据getSession的逻辑就发明了这样的一种共计方式叫做session固定攻击。 防止session的固定攻击,设置为false,找不到session默认就返回一个空不回去创建一个session 如果session不为空,让session失效。 下面在设置为true,上面已经把之前的session失效掉了。所以这里再调用session就没有可用的sesion了。它回再创建出一个新的session来。也就是说每次你登陆成功以后。你的session里面的信息和你之前的session已经不是一个session。 如果你这么写代码的话,就可以避免掉session固定攻击。 查看返回的cookie里面的参数 通过jSessionID和服务器上的session绑定起来的。 path属性和这里的域名加路径合起来 就是path属性。当你访问一个什么样的路径的时候,我的cookie会被携带发送过去。 域名是分级的,一级域名二级域名等 如果在域名这里填写的是顶级域名

Nodejs Request使用介绍

时间秒杀一切 提交于 2019-12-05 15:47:46
这篇就先介绍一个Node.js的模块—— request 。有了这个模块,http请求变的超简单。 使用超简单 Request使用超简单,同时支持https和重定向。 var request = require('request'); request('http://www.google.com', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) // 打印google首页 } }) 流 任何响应都可以输出到文件流。 request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png')) 反过来,也可以将文件传给PUT或POST请求。未提供header的情况下,会检测文件后缀名,在PUT请求中设置相应的 content-type 。 fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json')) 请求也可以 pipe 给自己。这种情况下会保留原 content-type 和 content-length 。 request.get('http:/

爬虫day1

醉酒当歌 提交于 2019-12-05 15:19:49
1.爬虫介绍 2.requests模块 一.爬虫介绍 本质: 1.就是向网站发送http请求,就会拿回一些页面/json格式数据(request) 2.处理数据,解析出有用的东西(re,bs4) 3.存储(mysql,文件,cvs,redis,mongodb,es) 4.分析(这个一般有专们的人去做数据分析,我们不需要学)-- cookie池和代理池每次发请求时拿随机的cookie和代理ip,每次拿一堆代理ip,ip和地址都不一样,这就相当于不同机器,好多人往那发请求,我不知道你是机器还是人,这样就不能禁止你爬,所以出现了cookie池和代理池。-- 正向代理和反向代理正向代理:代理我自己反向代理:代理服务器举例子:正向代理:比如说你访问谷歌你是访问不了的,需要翻墙,就是这里有一台服务器能访问到谷歌,他去拿到数据,然后我去拿,他把数据给我。就比如我去买票,但是票没有了,通过黄牛来买,他把票给我反向代理:谷歌也不可能就一台机器,他可能后面有一千台机器,但是他把我屏蔽掉了,只需要访问他那一个ip地址就可以。就比如我去租房子,我只要找中介,中介有很多房子,他吧房子给我就好了 爬虫的基本流程: #1、发起请求 使用http库向目标站点发起请求,即发送一个Request Request包含:请求头、请求体等 #2、获取响应内容 如果服务器能正常响应,则会得到一个Response

爬虫基本原理

自闭症网瘾萝莉.ら 提交于 2019-12-05 15:19:07
  一.使用requests 模块 是基于urllib库   1.requests.get() 的请求 import requests # 使用requests 模块 是基于urllib # urllib python 内置的模块 也是没扣你发送http请求的库 # 模拟http请求, get post put delete # 1 get 请求 # res = requests.get('https://www.baidu.com') # # print(res) # <Response [200]> # # # 注意编码的问题 # res.encoding = 'utf-8' # print(res.text) # 百度首页的内容 》》》 响应的内容 # # with open('a.html', 'w')as f: # 百度首页登录的页面 # # f.write(res.text)     2.requests.get() 的参数和编码的问题 报错‘gbk’ 》》》     1.'gbk' 编码格式的问题 # 1 get 请求 # res = requests.get('https://www.baidu.com') # # print(res) # <Response [200]> # # # 注意编码的问题 # res.encoding = 'utf-8'      2

针对Web的攻击技术

孤街醉人 提交于 2019-12-05 15:08:56
主动攻击 SQL注入攻击 OS命令注入攻击 会话劫持 被动攻击 XSS攻击 CSRF攻击 HTTP首部注入攻击 会话固定攻击 一、主动攻击 1.SQL注入攻击 什么是SQL? SQL是用来操作关系型数据库管理系统的数据库语言,可进行操作数据或定义数据等。 什么是SQL注入? SQL注入是指针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。如果在调用SQL语句的方式上存在疏漏,就有可能执行被恶意注入非法SQL语句。 SQL案例: SELECT * FROM bookTb1 WHERE author = '作者'--' and flag = 1 SQL语句中的--之后全部视为注释,即and flag = 1就会被忽略。 2.OS命令注入攻击 什么是OS命令注入攻击? OS命令注入攻击是指通过Web应用,执行非法的操作系统命令达到攻击的目的。 如何攻击? 可以从Web应用中通过Shell来调用操作系统命令。如果调用的Shell时存在疏漏,就可以执行插入的非法OS命令。通过OS注入攻击可执行OS上安装的各种程序。 示例: |/usr /sbin /sendmail ; cat /etc / passwd | mail hack@example.jp 攻击者输入值(; cat /etc / passwd | mail hack@example.jp)中含有分号(;)