【问题标题】:REST API basic security based on time基于时间的 REST API 基本安全性
【发布时间】:2015-01-23 11:36:00
【问题描述】:

我有一个可供移动应用程序访问的 REST API。我已经包含了一些基本的身份验证配置,其中之一是基于时间的;客户端 (Android) 获取系统当前时间(Java 命令 System.getCurrentTimeMillis() --> 当前时间与 UTC 1970 年 1 月 1 日午夜之间的差异,以毫秒为单位),以及服务器处理呼叫的时间,它做同样的事情,然后比较两个值并且差异小于 10 秒,它认为调用有效。

问题是我看到一些(实际上只是几个)调用,其中客户端和服务器之间的差异大约是 1 小时,这让我觉得这个 Java 函数可能会受到一些内部配置的影响在设备上...

谢谢!

【问题讨论】:

  • 嗯,是的,如果您手动调整手机上的系统时钟,那将改变System.getCurrentTimeMillis() 的结果...(虽然不清楚您实现的是真正的身份验证... .)
  • 检查客户端和服务器的时区是否相同。
  • (A) 你为什么要关心客户端时钟上的时间?这如何提供任何安全性? (B) 在 StackOverflow 中搜索 java、date 和 Joda 等术语,以找到数百个有关如何处理日期时间的有用问题和解答。
  • @BasilBourque:绝对不是那个副本。

标签: java rest authentication time jersey


【解决方案1】:

现在,我建议您使用 Joda Time 之类的库(或 java 8 上的新日期和时间 API)。

Java 的旧时 api 有几个问题可能会影响您。我现在能想到的一个是夏令时。取决于你的服务器 配置可能导致您描述的场景。

顺便说一句,您所做的不是身份验证。充其量是授权。您允许根据创建日期处理请求。

【讨论】:

  • 没错,我说的是身份验证,我的意思是授权:)。已经在使用 Joda 时间了,看起来一些问题已经消失了,谢谢。
猜你喜欢
  • 2012-12-29
  • 1970-01-01
  • 2018-03-12
  • 1970-01-01
  • 2013-11-05
  • 2015-05-01
  • 2011-08-19
  • 2018-06-18
  • 1970-01-01
相关资源
最近更新 更多