Java调用亚马逊接口微博提示 2接口错误Timestamp错误

问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
服务端提供各种功能接口供客户端调用,那么怎样才能确保请求是来自合法的客户端,而不是非法的请求呢?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
验证token,或者服务端用OAuth2框架
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
在设计API时,要保证RESTful API的安全性,主要考虑三个大方面:
1.对受限资源的登录授权2.对请求做身份认证3.对敏感数据进行加密
一、受限资源的登录授权此流程不是本文重点,不赘述,基本流程如下:
客户端提交账号信息(用户名+密码)到服务端
服务端验证成功,返回AccessToken给客户端存储3.访问受限资源时,客户端带入AccessToken就可访问。
二、请求认证如果不对请求进行签名认证,那么可以简单的通过fiddler等工具轻易抓包拿到数据,并进行篡改,提交,大规模批量调用,则会使系统产生大量垃圾数据,系统资源被大量消耗,甚至无法正常使用(另说,当然可以通过GateWay进行限流),因而我们需要对请求进行签名认证。
URL格式URL:schema://domain/path?query&imei×tamp&sign
参数说明签名方法sign=signature(path?query&imei×tamp&SIGN_KEY)
验证过程认证逻辑1、初始时,服务端存有各App版本的SIGN_KEY,客户端存有对应版本的SIGN_KEY2、当要发送请求之前,通过签名方法加密,得到一个sign3、发送请求的时候,连同sign一起发送给服务器端4、服务器端首先验证时间戳timestamp是否有效,比如是服务器时间戳5分钟之前的请求视为无效;5、然后取对应版本的SIGN_KEY验证sign是否合法6、为了防止重放攻击,需要检查sign是否在redis中存储,如不存在则存入redis(缓存5分钟)
如何防止数据篡改这里通过签名参数中包含原有请求的所有参数,改动任意参数,sign值都会不同,因此无法篡改。
如何防止重放攻击由于签名算法中还有imei(设备唯一Id)、timestamp参数,且签名算法为不可逆算法(如md5或sha1),因而对于正常的每个请求sign值不会重复。此时服务端可以存储5分钟的sign值,来做重放攻击时的验证过滤,超过5分钟的请求则直接被timestamp校验过滤。
总结如此便实现了请求认证,防止数据篡改,重放攻击,但是需要确保App密钥(SIGN_KEY)的安全保存,其优点是容易理解与实现,缺点是需要承担安全保存密钥和定期更新密钥的负担。
三、敏感据加密1)、部署SSL基础设施(即HTTPS),敏感数据的传输全部基于SSL。2)、仅对部分敏感数据做加密(例如账号+密码),并加入某种随机数作为加密盐,以防范数据被篡改。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你是如何定义合法和非法的?在SSO框架下,有token就是横着走,如果是第三方肯定需要appid和appsecret,需要授权的话还要带上AccessToken,这样也是横着走,最简单的是写一个IP拦截器,只允许信任IP通过,但是是用于内部互相调用的高级别拦截了,一般来说对方提供了token或appsecret,基本上都算是合法的吧?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我们用的RSA加密算法,请求数据的参数均转成json然后用服务器RSA证书对json进行加密,http请求就可以了,服务端私钥解密
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
使用oauth2或者类似的token之类的
同步到新浪微博
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:报错:: Servlet.service() for servlet [action] in context with path
[/PandaStarOA] threw exception [java.lang.IllegalArgumentException:
Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]] with root
java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
GregorianCalendar gcal = new GregorianCalendar(); // 获得当前时间
// 设定格式yyyy-mm-dd hh:mm:ss
DateFormat df = new SimpleDateFormat(&yyyy-MM-dd HH:mm:ss&);
Date date = gcal.getTime(); // 将当前时间转成日期对象
String datetime = df.format(date); // 获得符合格式的字符串,当前日期时间
int index = datetime.indexOf(& &);
String selectday = datetime.substring(0, index); // 当前日期
// 将当前日期换成Timestamp对象
// string的类型必须形如: yyyy-mm-dd hh:mm:ss[.f...] 这样的格式,中括号表示可选,// 否则报错!!!
Timestamp nowdatetime = Timestamp.valueOf(datetime);
附带几种,获取java获取时间戳的方式:
1、long currentTime = System.currentTimeMillis();
2、long currentTime = new Date().getTime();
3、long currentTime = Calendar.getInstance().getTimeInMillis();
三种获取方式,获取速度:1&2&3
本文已收录于以下专栏:
相关文章推荐
import java.text.DateF
import java.text.ParseE
import java.text.SimpleDateF
假设表有3个字段:id、name、update_time,希望在新增记录时能自动设置update_time字段为当前时间
设置DEFAULT CURRENT_TIMESTAMP即可
CREATE T...
知识点:es6的Object方法、正则表达式、循环对象等
直接贴代码:
new date()标准时间转yyyy-mm-dd hh:mm 24小时制
// 扩充js的...
java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss
DEBUG (Hiberna...
String转换Timestamp
,关于Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]报错的研究
此方法为Timestamp的 转换方法。
这几天做到excel导入功能,其中里面有几个时间时段,所以用了这个类来将导入的字符串格式转换Timestamp格式。
不慎出现了
java.lang.I...
在java开发过程中经常会遇到统计某一天或是某一个月的数据,因此常常需要获取截取数据的两个时间戳(比如统计今天的数据,则需要获取一个开始时间为今天零点以及一个结束时间为明天零点),然后根据数据相关的时...
JAVA获取时间戳,哪个更快
他的最新文章
讲师:韦玮
讲师:陈守元
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 调用接口500错误 的文章

 

随机推荐