我的应用程序的用户最近发现了我 2 多年前遇到的情况。
简而言之,系统会向客户发送一个 URL 链接,点击该链接后,某些操作会根据与 URL 查询字符串一起传递的加密 key 执行。早些时候它工作正常,因为用户必须单击 SMS 中的链接才能执行它。但是现在,例如 iPhone 或类似软件中的 SMS 客户端会获取 URL 并尝试显示预览(类似于 Skype 等应用程序所做的)。但问题是链接只有一次,第二次点击时链接已经过期,因为假设它已经被点击了。
因此,在这种情况下,用户永远无法进入下一步,因为链接已经以消息预览的形式被使用。
我有一个相同的解决方法,例如显示一个假页面或类似的东西,但我不想使用它,因为我知道这认为我很常见,你们这些天才人士有一些东西可以分享。
请分享如何识别正在寻找 og 标签的客户端或如何识别这些类型的客户端,以便除非用户通过单击链接手动完成,否则不会处理实际请求。
最佳答案
据我所知,在开放图规范中没有必须使用一致的用户代理客户端。
因此,基于此进行阻止是一个不断变化的目标,每个应用都可以根据需要使用不同的代理。
我一直反对这一点的方式是获取操作永远不应该是破坏性操作。 get 应该始终是安全的,可以一遍又一遍地运行。 如果您需要进行破坏性操作,该页面应包含某种形式的用户输入/按钮/链接,这会触发向服务器发送消息。
如果需要,您还可以通过要求用户确认数据中的某些内容来在链接中添加额外的安全级别,例如他们的电话号码。
这意味着如果某个链接落入坏人之手(请记住,SMS 未加密,因此可能会被窥探),如果没有此信息,用户将无法执行链接的破坏性操作。
关于c# - 短信客户端URL预览检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49958249/