token

[PHP] 接口增加recaptcha行为验证

自作多情 提交于 2019-12-10 14:52:33
需要先翻墙创建一个谷歌账户和创建recaptcha验证的网站域名,获取到两个secrect https://www.google.com/recaptcha/admin 前端增加html和js代码,例如 <input type="hidden" name="token" id="token" /> <script src="https://www.recaptcha.net/recaptcha/api.js?render=客户端scerect"></script> <script> grecaptcha.ready(function() { grecaptcha.execute('客户端scerect', {action: 'homepage'}).then(function(token) { $('#token').val(token); }); }); </script> 后端增加验证代码,例如: post请求https://www.recaptcha.net/recaptcha/api/siteverify, $tokenVerify=array(); $tokenVerify['secret']='服务端secrect'; $tokenVerify['response']=$params['token']; $tokenResponse=post("https://www

微信公众号开发教程02:获取access_token

安稳与你 提交于 2019-12-10 14:27:05
一、access_token简介 access_token是公众号接口调用的凭据,公众号调用各接口时均需使用access_token。 例如: 1)创建自定义菜单接口: https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN 2)获取素材列表接口: https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN 3)获取用户基本信息接口: https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN 等等,这些接口的请求地址均需要一个ACCESS_TOKEN参数,该参数就需要调用获取access_token接口来获取 注意: 1)access_token有时效性,当前有效时间为7200秒,需要的存储空间为512个字符空间,需要注意的是,微信后期有可能会改这个access_token的过期时间 2)如果在布署中有多台业务逻辑服务器均在自己的程序中获取access_token,这将造成多次刷新access_token的情况,建议布署中通过一台中控服务器来统一获取

腾讯微博OAuth2.0认证介绍

耗尽温柔 提交于 2019-12-10 14:26:53
目录 1 腾讯微博OAuth2.0认证介绍 2 获取accesstoken的两种方式 2.1 1.Authorization code grant 2.1.1 第一步:请求code 2.1.2 第二步:请求accesstoken 2.2 2.Implicit grant 3 刷新accesstoken 4 访问API资源 4.1 请求方法 4.2 请求参数(公共部分) 5 使用案例 6 accesstoken过期时间 7 错误码说明 腾讯微博OAuth2.0认证介绍 腾讯微博开放平台,是基于腾讯微博系统,为广大开发者和用户提供的开放数据分享与传播平台。 广大开发者和用户登录平台后,就可以使用平台提供的开放API接口,创建应用从微博系统获取信息,或将新的信息传播到整个微博系统中,丰富多样的API接口和应用,加上您的智慧,将创造出无穷的应用和乐趣。 在使用腾讯微博平台提供的API前,您需要做以下两步工作: 成为开发者,并申请appkey和appsecret 授权获取accesstoken Accesstoken是第三方获得用户授权的凭证,是第三方访问api资源的票据。目前,腾讯微博采用Oauth2.0协议对第三方进行授权,相对Oauth1.0来说,Oauth2.0具有更加简单和安全特点。 关于Oauth2.0的详细介绍,请参考 Oauth2.0协议标准 。 如果您需要使用Oauth1

App架构设计经验谈:接口的设计

时光怂恿深爱的人放手 提交于 2019-12-10 14:07:22
App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉。 安全机制的设计 现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息。实现上,大部分都采用token的认证方式,一般流程是: 用户用密码登录成功后,服务器返回token给客户端; 客户端将token保存在本地,发起后续的相关请求时,将token发回给服务器; 服务器检查token的有效性,有效则返回数据,若无效,分两种情况: token错误,这时需要用户重新登录,获取正确的token token过期,这时客户端需要再发起一次认证请求,获取新的token 然而,此种验证方式存在一个安全性问题:当登录接口被劫持时,黑客就获取到了用户密码和token,后续则可以对该用户做任何事情了。用户只有修改密码才能夺回控制权。 如何优化呢?第一种解决方案是采用HTTPS。HTTPS在HTTP的基础上添加了SSL安全协议,自动对数据进行了压缩加密,在一定程序可以防止 监听、防止劫持、防止重发,安全性可以提高很多。不过,SSL也不是绝对安全的,也存在被劫持的可能。另外,服务器对HTTPS的配置相对有点复杂,还需 要到CA申请证书,而且一般还是收费的。而且

spring-boot swagger2 设置全局token,说明页面接口无法带入token

一曲冷凌霜 提交于 2019-12-10 13:47:05
1、swagger配置类 // 验证 private List<ApiKey> securitySchemes() { List<ApiKey> apiKeyList = new ArrayList(); apiKeyList.add(new ApiKey("token", "token", "header")); return apiKeyList; } private List<SecurityContext> securityContexts() { List<SecurityContext> securityContexts = new ArrayList<>(); securityContexts.add(SecurityContext.builder().securityReferences(defaultAuth()) .forPaths(PathSelectors.regex("^(?!auth).*$"))//过滤要验证的路径 .build()); return securityContexts; } //增加全局认证 List<SecurityReference> defaultAuth() { AuthorizationScope authorizationScope = new AuthorizationScope("global",

How to differentiate '-' operator from a negative number for a tokenizer

社会主义新天地 提交于 2019-12-10 13:34:01
问题 I am creating an infix expression parser, an so I have to create a tokenizer. It works well, except for one thing: I do not now how to differentiate negative number from the "-" operator. For example, if I have: 23 / -23 The tokens should be 23 , / and -23 , but if I have an expression like 23-22 Then the tokens should be 23 , - and 22 . I found a dirty workaround which is if I encounter a "-" followed by a number, I look at the previous character and if this character is a digit or a ')', I

微信公众平台开发自定义菜单功能开发

白昼怎懂夜的黑 提交于 2019-12-10 13:23:54
一、简介 微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能。开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接。自定义菜单接口将为公众账号的信息展示空间提供更多可能性。本文将针对自定义菜单做简单的开发应用,以供读者参考。 二、官方说明 开发者获取使用凭证后,可以使用该凭证对公众账号的自定义菜单进行创建、查询和删除等操作。 自定义菜单接口可实现以下类型按钮: click(点击事件): 用户点击click类型按钮后,微信服务器会通过消息接口(event类型)推送点击事件给开发者,并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值进行消息回复。 view(访问网页): 用户点击view类型按钮后,会直接跳转到开发者指定的url中。 创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后,再次关注,则可以看到创建后的效果。 文档地址:http://mp.weixin.qq.com/wiki/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E6%8E%A5%E5%8F%A3 三、获取使用凭证 3.1 获取appid 和appsecret 在 微信公众平台 >

使用JJWT做token验证

╄→尐↘猪︶ㄣ 提交于 2019-12-10 12:49:21
什么是JJWT? JJWT 是一个提供端到端的JWT创建和验证的Java库。永远免费和开源(Apache License,版本2.0),JJWT很容易使用和理解。它被设计成一个以建筑为中心的流畅界面,隐藏了它的大部分复杂性。 什么是JSON Web Token(JWT) JSON Web Token (JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。和 Cookie-Session 的模式不同,JSON Web Token(JWT)使用 Token 替换了 SessionId 的资源访问和状态的保持。 JWT的组成 Jwt 由头部、载荷、签名三部分组成,头部包含元数据,通常用来记录JWT所用的算法。 例如: Header: { "typ": "JWT", "alg": "HS256" } 将这个头部使用Base64编码过后,就得到的JWT的第一段字符串 载荷:载荷用来承载JWT中的有效信息,通常包括三部分 公共的声明 可以存放自定义的信息,但是由于载荷仍旧使用的Base64进行编码,所以不建议在载荷中存放敏感信息。 私密的声明 私密的声明用来存放提供者和消费者共同定义的数据。但是由于载荷仍旧使用的Base64进行编码,所以不建议在载荷中存放敏感信息。 标准中注册的声明 iss :jwt的签发者 sub :jwt的面向用户 aud:

Getting the error "expected identifier or '(' before '{' token in C [closed]

房东的猫 提交于 2019-12-10 12:24:02
问题 This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center. Closed 6 years ago . Any help would be great! #include <stdio.h> #define pi 3.14159 int main() { float r; char PI; /*Program for circumference. */ printf(" This is a program

Java web app security: adding tokens to requests

泄露秘密 提交于 2019-12-10 12:17:19
问题 I'm looking for a method or current API that allows you to add on tokens to web app requests. Maybe within the session but not persisted. Or if you could help me by outlining an efficient method for doing this E.g. 1. GET request => Servlet generates a token and prints it in the view 2. returns a view with a hidden token <input type="hidden" name="token" value="UA37jdjs9UDJS3"> <input type="submit" name="deleteEmail" value="Delete"> 3. POST request => form is submitted and checks if the token