cookie

web前端防止xss 攻击

…衆ロ難τιáo~ 提交于 2019-12-28 05:23:21
对输出进行编码 在输出数据之前对潜在的威胁的字符进行编码、转义是防御XSS攻击十分有效的措施。如果使用好的话,理论上是可以防御住所有的XSS攻击的。 对所有要动态输出到页面的内容,通通进行相关的编码和转义。当然转义是按照其输出的上下文环境来决定如何转义的。 1> 作为body文本输出,作为html标签的属性输出: 比如: u s e r n a m e < / s p a n > , < p > < c : o u t v a l u e = " {username}</span>, <p><c:out value=" u s e r n a m e < / s p a n > , < p > < c : o u t v a l u e = " {username}"></c:out> 此时的转义规则如下: < 转成 < 转成 > & 转成 & " 转成 " ’ 转成 &#39 2> javascript事件 <input type=“button” οnclick=‘go_to_url("${myUrl}");’ /> 除了上面的那些转义之外,还要附加上下面的转义: \ 转成 \ / 转成 / ; 转成 ;(全角;) 3> URL属性 如果 确保:href 和 src 的值必须以 http://开头,白名单方式;不能有10进制和16进制编码字符。 HttpOnly 与 XSS防御

单点登录之session跨域

一笑奈何 提交于 2019-12-28 02:43:17
Session 跨域 1.在hosts文件配置两个域名 如: www.chenyu.com sso.chenyu.com 2.引入CookieUtils public class CookieUtil { /** * 得到Cookie的值, 不编码 * * @param request * @param cookieName * @return */ public static String getCookieValue ( HttpServletRequest request , String cookieName ) { return getCookieValue ( request , cookieName , false ) ; } /** * 得到Cookie的值, * * @param request * @param cookieName * @return */ public static String getCookieValue ( HttpServletRequest request , String cookieName , boolean isDecoder ) { Cookie [ ] cookieList = request . getCookies ( ) ; if ( cookieList == null || cookieName == null

请求库之urllib,requests及工具selenium

徘徊边缘 提交于 2019-12-28 02:39:39
urllib模块 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求。其常被用到的子模块在Python3中的为urllib.request和urllib.parse,在Python2中是urllib和urllib2。 一、使用流程: 指定url 基于urllib的request子模块发起请求 获取响应中的数据值 持久化存储 二、urlopen函数原型: urllib.request.urlopen(url, data=None, timeout=<object object at 0x10af327d0>, *, cafile=None, capath=None, cadefault=False, context=None) 在日常开发中,我们能用的只有url和data这两个参数。 url参数:指定向哪个url发起请求 url的特性:url必须为ASCII编码的数据值。所以我们在爬虫代码中编写url时,如果url中存在非ASCII编码的数据值,则必须对其进行ASCII编码后,该url方可被使用。 get: word = urllib.parse.quote("人民币") post: data = { 'kw':'西瓜'} data = urllib.parse.urlencode(data) data = data.encode()

Python入妖3-----Urllib库的基本使用

风流意气都作罢 提交于 2019-12-28 02:39:22
什么是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 ''''' Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样读取www和ftp上的数据 urlopen 方法用来打开一个url read方法 用于读取Url上的数据 ''' response = urllib.request.urlopen('http://www.baidu.com') print(response.read().decode('utf-8')) urlopen一般常用的有三个参数,它的参数如下: urllib.requeset.urlopen(url,data,timeout)

day_58

匆匆过客 提交于 2019-12-28 02:06:39
目录 cookie与session原理 cookie 如何设置cookie 如何获取cookie 删除cookie(了解) 基于cookie实现的登录认证装饰器 session django中间件 cookie与session原理 ​ 为什么会有这些技术 ​ 1.目的是为了保存客户端的用户状态 ​ 2.原因:HTTP协议是无状态的 cookie ​ 保存在客户端浏览器上的键值对 ​ cookie虽然是保存在客户端浏览器上的键值对 但它是由服务端设置的 ​ 浏览器有权禁止cookie写入 ​ token 加密字符串 ​ 加密算法 xxx ​ username >> (xxx) >> 随即字符串 ​ django操作cookie 小白必会三板斧 obj = HttpResponse() # 利用obj对象你才可以操作cookie return obj obj = render() return obj obj = redirect() return obj 如何设置cookie obj.set_cookie('k1','v1') # 告诉浏览器设置 如何获取cookie request.COOKIES.get('k1') # 获取浏览器携带过来的cookie值 如何设置cookie的超时时间 obj.set_cookie('k1','v1',max_age=3) obj.set

Django 中的 Cookie 和 Session

◇◆丶佛笑我妖孽 提交于 2019-12-28 01:05:29
Cookie 设置Cookie: rep = render(request, '.html') rep.set_cookie(key, value) rep.set_signed_cookie(key, value, salt='') # 参数: key: value='', max_age=None, 超时时间,不设置超时时间,则表示关闭浏览器自动清除 expires=None, 超时时间 path='/', Cookie生效的路径('/'表示根目录,根目录的Cookie可以被任何url的页面访问) domain=None, Cookie生效的域名 secure=False, https传输 httponly=False 只能http传输,无法通过JavaScript获取 获取Cookie: request.COOKIE['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None) # 参数: default: 默认值 salt: 加密盐 max_age: 过期时间 通过jQuery操作Cookie <script src="/static/jQuery.js"></script> <script src="/static/jquery.cookie.js"></script>

Django之cookie与session、中间件

旧巷老猫 提交于 2019-12-28 01:05:01
目录 cookie与session 为什么会有cookie和session cookie 设置cookie 获取cookie 删除cookie 实例:cookie版登录校验 session 设置session 获取session 删除session session也可以设置超时时间 实例:session版登录校验 django中间件 应用场景 自定义方法 django请求生命周期流程图 中间件之前端操作 跨站请求伪造(csrf) 钓鱼网站实例 防钓鱼网站策略 CBV加装饰器 csrf_exempt 两种装饰方式 其他装饰器 三种装饰方式 每日面试题 python2和python3的区别(至少写三个) 什么是可变,什么是不可变 m=10,n=5,互换值(至少两种方式) cookie与session 为什么会有cookie和session 由于HTTP协议是无状态的,无法记住用户是谁,这样我们在每一次登陆的时候,都要重新输入密码,甚至如果不设置cookie,网页可能都请求不了 cookie 保存在 客户端 浏览器上的键值对 是 服务端 设置在 客户端 浏览器上的键值对,也就意味着浏览器其实可以拒绝服务端的命令。默认情况下,浏览器都是直接让服务端设置键值对的 在操作开始之前我们需要对三板斧进行变形 obj1 = HttpResponse() return obj1 obj2 =

一文看懂轻量级框架——Flask

妖精的绣舞 提交于 2019-12-27 20:11:05
Flask 一、flask入门 WEB工作原理 C/S 客户端/服务器端 B/S 浏览器/服务器端 Flask有俩大核心 werkzeug 实现路由、调试和web服务的网关接口 jinjia2 实现了模板 简介: flask 是一个python微型框架 只提供了一个强健的核心 其它功能都需要通过第三方扩展库来实现 安装 pip install flask 完整启动的代码 from flask import Flask app = Flask ( __name__ ) # 路由 别人访问你的地址 http://www.baidu.com/a/b @app . route ( '/' ) def index ( ) : print ( '访问到我了' ) # 响应 return '访问到我了' # 判断只能在主文件中文件flask项目 if __name__ == '__main__' : # 运行flask app . run ( ) 启动地址 http://127.0.0.1:5000 http://127.0.0.1:5000 / run启动参数 参数 说明 debug 是否开启调试模式 默认为false 开启会自动加载代码 和显示错误信息 threaded 是否开启多线程 默认是不开启的 port 端口号 默认5000 host 主机 默认127.0.0.1 完整的启动 app

express 框架之session

﹥>﹥吖頭↗ 提交于 2019-12-27 19:25:07
一、什么是session?   最近在学习node.js 的express框架,接触到了关于session方面的内容。翻阅了一些的博客,学到了不少东西,发现一篇博文讲的很好,概念内容摘抄如下: Session是什么 Session一般译作会话,牛津词典对其的解释是进行某活动连续的一段时间。从不同的层面看待session,它有着类似但不全然相同的含义。比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,登录、并完成购物直到关闭浏览器,这是一个会话。而在web应用的开发者开来,用户登录时我需要创建一个数据结构以存储用户的登录信息,这个结构也叫做session。因此在谈论session的时候要注意上下文环境。而本文谈论的是一种基于HTTP协议的用以增强web应用能力的机制或者说一种方案,它不是单指某种特定的动态页面技术,而这种能力就是保持状态,也可以称作保持会话。 为什么需要session 谈及session一般是在web应用的背景之下,我们知道web应用是基于HTTP协议的,而HTTP协议恰恰是一种无状态协议。也就是说,用户从A页面跳转到B页面会重新发送一次HTTP请求,而服务端在返回响应的时候是无法获知该用户在请求B页面之前做了什么的。 对于HTTP的无状态性的原因,相关RFC里并没有解释,但联系到HTTP的历史以及应用场景,我们可以推测出一些理由: 1.

请求 - axios

孤街浪徒 提交于 2019-12-27 17:47:38
实际应用示例 前端不需要做统一的接口防重 前端无法通过判断接口是否返回来释放按钮(因为可以手动刷新页面,将导致刷新前请求丢失) 后端对接口做了防重 通过增加时间戳避免IE9的get请求缓存问题 axios.interceptors.request.use(function (response) { if (method === 'get' && isIE) { config.url += `${!config.url.includes('?') ? '?' : '&'}timeStamp=${new Date().getTime()}`; } }) 添加响应拦截器,统一处理异常请求状态 axios.interceptors.response.use( res => { // 对响应数据进行处理 return res }, err => { const errInfo = err.response; if (errInfo) { switch (errInfo.status) { case 403: // 403 服务器拒绝请求。 break; case 404: // 404 服务器找不到请求的网页。 break; case 401: // 401 请求要求身份验证。 break; case 400: // 服务器不理解请求的语法。 break; case 500: //