cryptography - 为了防止重放攻击,我应该什么时候接受和拒绝时间戳?
问题描述
为了防止重放攻击,我正在实现一种机制,客户端必须向服务器发送一个由 UUID 和时间戳组成的 nonce 令牌。它们都是由客户端生成的。
但是,我对时间戳感到担忧。我知道要使其正常工作,服务器和客户端的时钟必须同步。我无法控制客户端,直观地说,期望服务器和客户端的时钟完全同步似乎是不现实的。因此,我预计客户的时钟可能会太早或太晚几秒钟。
此外,我预计客户端发送 nonce 令牌的时间和服务器收到它的时间之间会有几秒钟的差异。如果客户端的连接很差,我预计差距会更重要。
由于这些担忧,我决定:
- 拒绝超过 2 分钟的时间戳;
- 拒绝设置超过 10 秒的时间戳。
我想要处理过时间戳验证的程序员的意见。您是否发现我在时间戳验证方面所做的选择存在问题?您遇到过哪些问题?
谢谢!
解决方案
推荐阅读
- python - Python:使用“import csv”从 S3 存储桶读取 CSV
- sql-server - 代码循环遍历列,但不将结果添加到新表中
- java - 如何获得通用类型的列表,或者如果不可能解决提供的任务?
- reactjs - 如何在酶测试用例中传递 Redirect 的道具
- css - React 组件和 CSS:对同一元素中的项目进行不同的样式设置
- oracle - 如何在 Oracle 中使用非 Ascii 字符在 Oracle 中插入 Blob 列?
- reactjs - 在 npm run 弹出后我们可以使用外部 css 文件吗?
- kerberos - 如何将 keytab 文件传递给正在部署在 pcf 上的应用程序
- firebase - 没有映射深层链接的动态链接行为
- python - 如何从列表理解“转换”两者:for-in 和 if-in... 到带有循环和条件的“普通”python3 代码