Loading... 在Typecho发布1.2.1-rc版本修复了作者评论的URL字段中的一个XSS攻击漏洞后,我发现作者的email字段中仍然存在漏洞。我能够绕过验证器并进行存储型 XSS 攻击,可以利用它来窃取 cookie。 为了重现该问题,我构造了一个评论提交 POST 请求,并将电子邮件字段设置为以下值: ```html "></a><script>alert('hacked')</script>"@example.com ``` 受影响的版本 **1.2.0 \~ 1.2.1-rc** 由 FaithPatrick 在 GitHub上反馈该问题 [issues#1560](https://github.com/typecho/typecho/issues/1560) [issues#1561](https://github.com/typecho/typecho/issues/1561) ![202304230901403450.webp](https://objectstorage.global.loongapi.com/loongapiSources/picbed/penglong/2023/04/23/202304230901403450.webp "202304230901403450.webp") ![202304230902003100.webp](https://objectstorage.global.loongapi.com/loongapiSources/picbed/penglong/2023/04/23/202304230902003100.webp "202304230902003100.webp") 根本原因位于 **var/Typecho/Validate.php** . 该filter\_var()函数不应该用于验证,因为它只返回所提供的 URL 或电子邮件的净化副本,这不够严格。 考虑到您网站的安全,站长建议使用Typecho(1.2.0 \~ 1.2.1-rc) 的用户暂时关闭评论,直到问题在新版本中完全修复。或使用临时解决方案 可以将 **var/Typecho/Validate.php** 第99行临时使用则表达式替换使用,这只针对邮箱 ```php return filter_var($str, FILTER_VALIDATE_EMAIL) !== false; 改为 return preg_match("/^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$/",$str) === 1; ``` 文章转载于:道锋潜鳞 原文链接:[https://www.dfql.io/archives/7232/](https://www.dfql.io/archives/7232/) 最后修改:2023 年 05 月 31 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏
此处评论已关闭