siteserver / cms

SS CMS 基于 .NET Core,能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大并易于维护的网站平台。
https://sscms.com
GNU Affero General Public License v3.0
3.68k stars 1.21k forks source link

验证码机制存在重用漏洞 #3696

Open fsea opened 11 months ago

fsea commented 11 months ago

在登录等需要验证码的地方,通过提交token和code的方式验证。 token是加密过的验证码,包含验证码和超时时间 code是用户输入的验证码。 存在的问题是提交时使用postman等工具,token永远提交一个相同的值,code也提交正确的值,则验证码功能将失效,直到验证码超时。 修改建议: 在服务端验证此验证码在有效期内是否已经被验证过,如果验证过,则不能重复使用。

fsea commented 11 months ago

临时解决办法: D:\Project\SSCMS-szxc\src\SSCMS.Core\Utils\CaptchaUtils.cs中添加方法: image

在验证验证码是否正确的地方加上: CaptchaUtils.IsAlreadyUsed(captcha, _cacheManager) 如果返回true就不让通过。

最好在CaptchaUtils里有一个统一的方法负责验证验证码是否可用及过期,其他地方不用重复写代码了

starlying commented 11 months ago

收到,我们会尽快修复。