token

Web信息安全实践_4.0 XSS_知乎1

一曲冷凌霜 提交于 2020-01-27 15:13:09
XSS攻击即为(Cross Site Scripting), 中文为跨站脚本。 之所以它的名字不是CSS而是XSS,是为了区分CSS。 XSS攻击是发生在 目标用户的浏览器 上的,当渲染DOM树的过程中执行了 不该 执行的JS代码时,就发生了XSS攻击。跨站脚本的重点不是“跨站”,而是“ 脚本” 页面执行不该执行的JS 我们首先来看一下,页面执行不该执行的JS是什么意思。譬如我们来看这个代码: // 假设有一个自动回答网站:在框内输入一个问题,这个问题是通过$_GET['q']获取的;网站后台接收用户输入,把用户输入展示在页面上。 Hello, your question is: <?php echo $_GET['q']; ?> // 接下来攻击者可以设计这么一个URL localhost/xss.php?q=<script>alert(1);</script> 大家想一想,这个URL点开一下,效果是什么? 再换一个URL呢? http://localhost/xss.php?q=%3Cscript%3Ealert%28document.cookie%29;%3C/script%3E 因此,所谓执行不该执行的JS代码的意思就是:用户通过各种方法向网站中注入了一些JS代码,而网站没有对用户的JS代码做任何检查,就直接把它有显示在了网站的页面上。因此,导致了用户注入的JS代码的运行。

JWT相关知识

三世轮回 提交于 2020-01-27 11:59:06
一、JWT是什么? json web token是为了在网络应用应用环境间传递声明而执行的一种基于JSON的开放标准,以token的方式代替传统的Cookie-Session模式,用于各服务器、客户端传递信息签名验证。 JWT由三个部分组成: 头部header, 载荷payload, 签名signature 二、流程图 用户使用用户名密码来请求服务器 服务器进行验证用户的信息 服务器通过验证发送给用户一个token 客户端存储token,并在每次请求时附送上这个token值 服务端验证token值,并返回数据 这个token必须要在每次请求时传递给服务端,它应该保存在请求头里, 另外,服务端要支持CORS(跨来源资源共享)策略,一般我们在服务端这么做就可以了Access-Control-Allow-Origin: *。 三、优点 1:服务端不需要保存传统会话信息,没有跨域传输问题,减小服务器开销。 2:jwt构成简单,占用很少的字节,便于传输。 3:json格式通用,不同语言之间都可以使用。 4:自包含(Self-contained):负载中包含了所有用户所需要的信息,避免了多次查询数据库 有什么问题欢迎留言 来源: CSDN 作者: 小白亮 链接: https://blog.csdn.net/weixin_45624316/article/details/104091410

koa-session学习笔记

早过忘川 提交于 2020-01-27 04:42:55
koa-session 是koa的 session 管理中间件,最近在写登录注册模块的时候学习了一下这部分的代码,感觉还比较容易看明白,让自己对于 session 的理解也更加深入了,这里总结一下。 session基础知识 这部分算是基础知识,熟悉的朋友可以跳过。 我们都知道 http协议本身是无状态的 ,因此协议本身是不支持“登录状态”这样的概念的,必须由项目自己来实现。我们常常说到 session 这个概念,但是可能有人并不是非常清楚我们讨论的 session 具体指代什么。我觉得这个概念比较容易混淆,不同的上下文会有不同的含义: session 首先是一个抽象的概念, 指代多个有关联的http请求所构成的一个会话 。 session 常常用来指代为了实现一个会话, 需要在客户端和服务端之间传输的信息 。这些信息可以是会话所需的所有内容( 包括用户身份、相关数据等 ), 也可以只是一个id , 让服务端可能从后台检索到相关数据 ,这也是实际系统中最常用的方式。 当我们讨论** session 的实现方式 的时候,都是 寻找一种方式从而使得多次请求之间能够共享一些信息**。不论选择哪种方式,都是 需要由服务自己来实现的, http 协议并不提供原生的支持 。 实现 session 的一种方式就是 在每个请求的参数或者数据中带上相关信息 ,这种方式的好处是 不受 cookie

微信公众平台开发 第一篇

时光毁灭记忆、已成空白 提交于 2020-01-27 04:09:34
一、通讯机制 二、注册微信平台公众帐号 https://mp.weixin.qq.com/ 注册完后,需要等待审核,官方说需要7天,快的话1-2天就可以了,未审核的帐号可以通过上面的网址登陆,但是会缺少部分功能(比如高级功能、服务等)。 三、微信公众平台开发者官方文档 http://mp.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5 等待审核的时候,务必先阅读此文档。 四、配置接口信息 审核通过后,https://mp.weixin.qq.com/登陆帐号。申请成为开发者。 填写URL和Token,其中URL是开发者用来接收微信服务器数据的接口URL。Token可由开发者任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。 注:本例中已经存在一个服务器,域名为www.XXX.cn/XXX/WechatIndex.aspx 五、验证URL 微信公众平台提供了一个php的示例代码:http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip 我把它转换为了C#代码(WechatIndex.aspx.cs): 此代码仅仅用于“成为开发者”的验证URL 1 public partial class WechatIndex :

Golang 限流器 time/rate 使用介绍

烂漫一生 提交于 2020-01-27 00:05:28
  本主题为系列文章,分上下两篇。本文主要介绍 time/rate 的具体使用方法,另外一篇文章 《Golang 限流器 time/rate 实现剖析》 则着重介绍其内部实现原理。   限流器是后台服务中的非常重要的组件,可以用来限制请求速率,保护服务,以免服务过载。 限流器的实现方法有很多种,例如滑动窗口法、Token Bucket、Leaky Bucket 等。   其实 golang 标准库中就自带了限流算法的实现,即 golang.org/x/time/rate。该限流器是基于 Token Bucket(令牌桶) 实现的。   简单来说,令牌桶就是想象有一个固定大小的桶,系统会以恒定速率向桶中放 Token,桶满则暂时不放。 而用户则从桶中取 Token,如果有剩余 Token 就可以一直取。如果没有剩余 Token,则需要等到系统中被放置了 Token 才行。   本文则主要集中介绍下该组件的具体使用方法: 构造一个限流器   我们可以使用以下方法构造一个限流器对象: limiter := NewLimiter ( 10 , 1 ) ;   这里有两个参数: 第一个参数是 r Limit。代表每秒可以向 Token 桶中产生多少 token。Limit 实际上是 float64 的别名。 第二个参数是 b int。b 代表 Token 桶的容量大小。   那么

vue 学习笔记--请求拦截

风格不统一 提交于 2020-01-26 18:05:31
import axios from 'axios' import store from "./store" ; import router from "./router" ; //在请求或响应被 then 或 catch 处理前拦截它们。 //http token 拦截 //直接暴露的是一个方法,所以到main.js引入直接调用即可 export default function setAxios ( ) { // 添加请求拦截器 axios . interceptors . request . use ( config => { if ( store . state . token ) { config . headers . token = store . state . token } return config } ) // 添加响应拦截器 axios . interceptors . response . use ( response => { if ( response . status === 200 ) { const data = response . data //如果登录过期/清空vuex的token和localstorage的token if ( data . xx === - 1 ) { store . commit ( 'setToken' , '' )

Vue--登录页面逻辑

烂漫一生 提交于 2020-01-26 12:26:00
添加Mock数据 前面我们使用elementUI实现了登录页面和简单的校验,现在使用接口的方式来实现登录的逻辑 使用EasyMock添加两个接口 因为要访问EasyMock 模拟接口, 所以要把 接口地址改一下,在 .env.development 文件中修改如下: 注意:改成你自已的EasyMock上的接口服务地址 # 使用 VUE_APP_ 开头的变量会被 webpack 自动加载,process.env.VUE_APP_xxx # 开发环境的前缀 VUE_APP_BASE_API = '/dev-api' # 目标服务接口地址,是按照自己的环境来的,添加或更改服务后,需要重启服务 VUE_APP_SERVICE_URL = ' http://mengxuegu.com:7300/mock/5db437d92aa750460d4fce18' 改完后,重启下 npm run serve , 看下是否正常 当登录成功后,响应状态码 2000 和 token 值。token用来 认证 后面请求只要是成功的,状态码均为 2000, 这个是与后台接口的约定 请求URL: /user/login 请求方式: post 描述:登陆认证 mock.js 配置如下 { "code":2000, "flag":true, "message":"验证成功", "data":{ "token":

OAuth2在内存、Redis、JDBC方式下的多客户端配置

梦想的初衷 提交于 2020-01-26 09:06:38
知识改变命运,撸码使我快乐,祝大家2020年元旦快乐!!! 点赞再看,养成习惯 本篇文章对应源码码云(Gitee)仓库 https://gitee.com/minbox-projects/api-boot-chapter ,您的Star是给我最大动力 Spring 所提供的 OAuth2 集成策略,支持多种方式存储 认证信息 以及 客户端信息 ,由于在之前的文章中讲解使用时把知识点进行了拆分,有很多同学不太会组合使用,很多单独问我 ApiBoot 所提供的 OAuth2 的整合后,多个客户端该怎么配置? 本章就来讲讲如果我们使用 内存方式 、 Redis方式 做 OAuth2 相关信息存储时,该如何配置多个客户端!!! 系列文章 ApiBoot 针对每一个组件都提供一系列的拆分详解文章,详情请访问 ApiBoot开源框架各个组件的系列使用文章汇总 。 前言 ApiBoot 集成 OAuth2 后 内存方式 与 Redis方式 的客户端配置都位于 application.yml/application.properties 配置文件内,通过源码发现 Spring 提供了一个接口 TokenStore 来定义操作认证信息的方法列表,实现该接口后就可以定义不同的存储方式具体的逻辑,当前我们也可以进行自定义,只需要将自定义实现类的实例交付给 Spring IOC 进行托管就即可,

Split a string into words by multiple delimiters

三世轮回 提交于 2020-01-26 08:47:35
问题 I have some text (meaningful text or arithmetical expression) and I want to split it into words. If I had a single delimiter, I'd use: std::stringstream stringStream(inputString); std::string word; while(std::getline(stringStream, word, delimiter)) { wordVector.push_back(word); } How can I break the string into tokens with several delimiters? 回答1: Assuming one of the delimiters is newline, the following reads the line and further splits it by the delimiters. For this example I've chosen the

Split a string into words by multiple delimiters

微笑、不失礼 提交于 2020-01-26 08:46:15
问题 I have some text (meaningful text or arithmetical expression) and I want to split it into words. If I had a single delimiter, I'd use: std::stringstream stringStream(inputString); std::string word; while(std::getline(stringStream, word, delimiter)) { wordVector.push_back(word); } How can I break the string into tokens with several delimiters? 回答1: Assuming one of the delimiters is newline, the following reads the line and further splits it by the delimiters. For this example I've chosen the