ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Pokémon Showdown网页版如何守护玩家账号安全?5大安全机制清单(XSS过滤与白名单详解)

Pokémon Showdown网页版如何守护玩家账号安全?5大安全机制清单(XSS过滤与白名单详解) Pokémon Showdown网页版如何守护玩家账号安全5大安全机制清单XSS过滤与白名单详解【免费下载链接】pokemon-showdown-clientThe client for Pokémon Showdown项目地址: https://gitcode.com/gh_mirrors/po/pokemon-showdown-client宝可梦对战平台 Pokémon Showdown 的网页客户端pokemon-showdown-client每天要承载海量玩家聊天与对战消息而这些消息里可能藏着恶意脚本。本文将从新手视角梳理Pokémon Showdown 账号安全的 5 大核心机制XSS 过滤、外链白名单、CSS 净化、登录限流、会话保护并附上关键源码路径帮你理解这个知名对战平台到底如何拦截攻击。一、XSS 过滤器白名单式的 HTML 净化跨站脚本攻击XSS是网页应用最常见的账号盗号手法——攻击者在聊天框里塞一段script就能偷走别人的登录 Cookie。Pokémon Showdown 的核心防线是play.pokemonshowdown.com/src/battle-log.ts中的sanitizeHTML方法它基于 Google Caja 实现白名单过滤默认拒绝Caja 默认禁止所有不认识的 HTML 标签只有显式加入白名单的标签如项目自定义的psicon、username、spotify等才能通过属性白名单每个标签只允许特定属性例如psicon只接受pokemon、item、type、category其余一律剥掉强制安全跳转所有a链接会被自动加上target_blank和relnoopener防止反向标签劫持reverse tabnabbing协议拦截geo:、sms:、tel:等非 HTTP 协议 URL 会被直接丢弃。也就是说即使攻击者把一段脚本发进对战房间渲染前就会被过滤器拆掉危险部分玩家账号不会泄露。二、外链白名单 中介页点到的每个链接都受监管聊天里的超链接是钓鱼攻击的高发区。Showdown 的做法是域名白名单白名单配置在config/config-example.js的Config.whitelist中官方完整列表托管在线上客户端在battle-log.ts的interstice模块里为每个白名单域名生成匹配规则不在白名单里的外链不会直接跳转而是先被重定向到中介页interstice——pokemonshowdown.com/interstice.php会明确提示此网站与本站无关可能包含有害内容由玩家手动点击才放行。这条链路让钓鱼链接必须自报家门大幅降低了中招概率。三、CSS 净化器第三方自定义样式也过安检第三方服务器可以上传自定义 CSS 皮肤但恶意 CSS 同样能探测和泄露信息。play.pokemonshowdown.com/customcss.php的处理流程是拉取服务器上的custom.css用lib/css-sanitizer/维基媒体 CSS 解析/净化库逐条解析样式表只保留合法声明剔除危险属性如expression()、url(javascript:...)后再下发并缓存 1 小时。先净化、后缓存保证玩家看到的皮肤既美观又安全。四、登录限流与密码保护暴力破解无效化登录逻辑集中在lib/ntbb-session.lib.php对应数据库结构见lib/ntbb-loginthrottle.sqlbcrypt 密码哈希密码使用password_hashbcrypt存储数据库中不存在明文登录限流Throttle同一 IP 24 小时内失败超过 500 次直接拒绝校验表结构ip / count / lastuserid / time四字段专为此设计暴力破解在这里失效可信代理白名单只有 CIDR 白名单内的代理 IP如 Cloudflare 网段才允许通过X-Forwarded-For透传真实 IP防止攻击者伪造来源绕过限流用户名过滤注册/改名时经过isUseridAllowed词库检查并限制 18 字符长度注册频率检查getRecentRegistrationCount限制同一 IP 短时间内的注册数量防批量小号。五、安全 Cookie、会话校验与 CSRF 防护账号登录后会话session本身就是数字钥匙。Showdown 对它做了多层加固Cookie 属性登录 Cookie 强制SecureSameSiteNoneHTTPS 才传输过期时间约一年SID 哈希比对会话 ID 在数据库中存的是password_hash后的哈希校验时用password_verify对比即使数据库泄露也拿不到可用会话超时自动失效timeout早于当前时间的会话直接删除并踢出登录CSRF 令牌关键表单提交要求隐藏字段csrf与 Cookie 中的sid完全一致csrfCheck跨站伪造请求会被拒绝重置密码令牌密码重置 token 采用 15 字节随机数带 7 天有效期并写入管理日志usermodlog登录断言签名客户端登录请求由登录服务器用 RSA 私钥签名getAssertion对战服务器验签后才放行防止伪造登录指令。总结5 大机制各守一道门机制作用关键路径XSS 过滤器净化聊天 HTML防脚本注入play.pokemonshowdown.com/src/battle-log.ts外链白名单 中介页拦截钓鱼跳转pokemonshowdown.com/interstice.phpCSS 净化器第三方皮肤过安检lib/css-sanitizer/、play.pokemonshowdown.com/customcss.php登录限流 bcrypt抵御暴力破解与撞库lib/ntbb-session.lib.php会话/CSRF 防护保护登录态不被窃取冒用lib/ntbb-session.lib.php对普通玩家来说这些机制都是无感的但对想自建对战服务器的开发者这套白名单 净化 限流 签名的组合拳堪称中小型 Web 平台账号安全的教科书级范本。【免费下载链接】pokemon-showdown-clientThe client for Pokémon Showdown项目地址: https://gitcode.com/gh_mirrors/po/pokemon-showdown-client创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表