挑战令牌在 Vtiger Web 服务中的真正用途是什么?

What purpose does the Challenge Token really serve in Vtiger Web Services?

我正在从多线程 Java 应用程序调用 VTiger (6.4) 网络服务。每次我需要调用 Web 服务时,我首先从 VT 获取挑战令牌,然后登录,最后执行我的查询。

在查看 VT Web 服务代码时,上面的内容似乎不是 "thread safe",因为一个线程获得的令牌将在 VT 的数据库中被第二个线程获得的令牌覆盖。如果 Java 应用程序在调用 VT 登录 Web 服务时碰巧颠倒了线程的执行顺序,其中一个调用将失败,因为令牌不正确。

我意识到我可以在我的应用程序中缓存令牌...但这意味着要实现共享存储的互斥锁定等。

所以,我的问题是:Challenge Token 是否真的为 VTiger 的网络服务增加了很多安全性?或者,可以绕过吗?

令牌可防止您的会话被盗。该令牌的替代方法是在每次调用中使用您的 accessKey,但 Vtiger Web 服务不是以这种方式构建的。

修改vtiger基础代码中的认证码肯定可以绕过。至少你需要修改两个文件

vtiger_root/include/Webservices/AuthToken.php

vtiger_root/include/Webservices/Login.php

我认为您应该跨线程共享一个令牌。也许使用单例来实现会话建立。