关于 account-security
面向电商团队的账户安全技能,适用于构建或审查托管平台及自定义平台上的客户账户。内容按平台说明登录滥用防护、MFA、社交登录和账户接管风险的处理方式。
主要功能
- 01按平台提供安全指导
- 02暴力破解与速率限制控制
- 03MFA 设置与实现
- 04社交登录选项
- 05密码与会话保护
- 06账户接管提醒实践
适用场景
- 01审查店铺账户防护措施
- 02为 WooCommerce 添加登录滥用控制
- 03规划管理员或高价值客户的 MFA
- 04为自定义店铺构建安全控制
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill account-security安装后在 Claude Code 中输入/account-security确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
tile.jsonevals/login-rate-limiting-and-brute-force-prot/criteria.jsontask.mdevals/password-hashing-breach-detection-and-mf/criteria.jsontask.mdevals/session-management-and-refresh-token-rot/criteria.jsontask.md详细介绍
账户安全
概述
客户账户中保存着付款方式、忠诚度积分、购买历史记录和收货地址,因此很容易成为凭证填充攻击和账户接管的高价值目标。有效的账户安全措施包括:在登录页面防范暴力破解、检测已泄露的密码、提供可选的多重身份验证(MFA),以及检测账户接管模式中的异常行为。具体方案很大程度上取决于你的平台:Shopify 在平台层面管理大多数安全控制,而 WooCommerce 则需要额外安装插件。
何时使用此技能
- 从头构建客户账户系统时
- 审核现有账户系统是否存在安全弱点时
- 发现凭证填充攻击时(来自分布式 IP 的登录失败率很高)
- 为高价值客户添加可选或必需的 MFA 时
- 将“使用 Google/Apple 登录”作为比密码更安全的替代方案时
核心说明
步骤 1:了解平台的安全模型
| 平台 | 平台负责处理的事项 | 需要配置的事项 |
|---|---|---|
| Shopify | SSL/TLS、登录暴力破解防护、PCI 合规性、服务器端安全 | 客户账户设置、是否要求电话验证、用于 Google/Apple 登录的社交登录应用 |
| WooCommerce | 基本登录表单 | 安装 Wordfence(免费版),以实现暴力破解防护、限制登录尝试、双重身份验证和登录安全监控 |
| BigCommerce | SSL/TLS、由平台管理的账户安全、基本暴力破解防护 | 为管理员用户启用双重身份验证;面向客户的双重身份验证需要使用应用 |
| Custom / Headless | 无——所有安全控制都需要自行构建 | 速率限制、密码哈希、MFA、会话管理、ATO 检测 |
步骤 2:针对平台设置账户安全
Shopify
Shopify 在平台层面处理大多数客户账户安全事项——你无需自行管理 SSL、暴力破解检测或密码哈希。
启用新客户账户(无密码登录): Shopify 提供两种账户体验:
- 前往 Settings → Customer accounts
- New customer accounts(推荐):客户使用发送到其邮箱或手机的一次性 6 位验证码登录;无需担心密码被盗或遭暴力破解
- Classic customer accounts:传统的邮箱/密码账户
切换到新客户账户(无密码)可消除最常见的攻击途径:凭证填充和暴力破解。
为管理员账户启用两步验证:
- 前往 Settings → Users and permissions
- 点击某个用户 → 启用 Two-step authentication required
- Shopify 的管理员 MFA 支持身份验证器应用(TOTP)和短信
社交登录(Google/Facebook/Apple): 从 Shopify App Store 安装社交登录应用:
- Oxi Social Login — 支持 Google、Facebook、Apple、LinkedIn
- NDNAPPS Social Login — 支持 Google、Facebook、Apple 这些应用会在账户创建和登录页面添加社交登录按钮。
检测可疑客户活动: Shopify 不会公开客户登录事件以供程序化监控。如需高级监控,可使用 Shopify 订单中的 Fraud analysis,检测账户接管以及相关的欺诈性购买。
WooCommerce
WooCommerce 内置的登录表单没有速率限制、多重身份验证(MFA)或高级安全功能。你必须通过插件添加这些功能。
安装 Wordfence Security(免费,推荐):
- 从 WordPress 插件目录安装并启用 Wordfence Security
- 前往 Wordfence → Login Security
- 启用 Brute Force Protection:
- 失败尝试 X 次后锁定(默认:20 次)
- 锁定时长(默认:4 小时)
- 统计 X 分钟内的失败次数(默认:5 分钟)
- 为管理员用户启用 Two-Factor Authentication(Wordfence 支持验证器应用 TOTP)
Limit Login Attempts Reloaded(仅用于速率限制的免费替代方案):
- 安装 Limit Login Attempts Reloaded
- 配置:失败 4 次后锁定,锁定 20 分钟,锁定 4 次后通过电子邮件通知
面向客户的 2FA:
- 安装 miniOrange 2 Factor Authentication 或 WP 2FA 插件
- 配置为允许(或要求)客户使用 2FA
- WP 2FA 支持 TOTP(Google Authenticator、Authy)、电子邮件验证码和备用验证码
WooCommerce 社交登录: 安装 Nextend Social Login(免费/高级版)——支持在 WooCommerce 登录和注册页面使用 Google、Facebook、Apple 和 Twitter/X 登录。
检测已泄露的密码: 安装 WPassword,或在注册和更改密码时实现自定义检查,通过 HaveIBeenPwned API 进行验证。
BigCommerce
管理员双重身份验证:
- 前往 Settings → Account Settings → Security
- 启用 Two-Step Verification;BigCommerce 支持验证器应用和短信
客户账户安全: BigCommerce 原生不提供面向客户的 2FA。可选方案:
- 使用 Stencil(BigCommerce 的店面框架)在客户登录页面添加自定义验证步骤
- 使用身份提供商(Auth0、Okta)进行客户身份验证——这可提供完整的 MFA 支持和凭据监控
BigCommerce 的 Google/社交登录: 通过 BigCommerce 的客户登录 API 与社交身份提供商集成。Auth0 提供了可直接使用的 BigCommerce 集成方案。
自定义 / 无头架构
对于自定义店面,请在每一层实现安全控制。
登录端点上的速率限制:
import { Ratelimit } from '@upstash/ratelimit';
import { Redis } from '@upstash/redis';
const redis = Redis.fromEnv();
const ipLimiter = new Ratelimit({ redis, limiter: Ratelimit.slidingWindow(20, '15 m'), prefix: 'rl_login_ip' });
const accountLimiter = new Ratelimit({ redis, limiter: Ratelimit.slidingWindow(5, '15 m'), prefix: 'rl_login_email' });
export async function checkLoginRateLimit(ip: string, email: string) {
const [ipResult, accountResult] = await Promise.all([
ipLimiter.limit(ip),
accountLimiter.limit(email.toLowerCase()),
]);
if (!ipResult.success) throw new Error('TOO_MANY_REQUESTS_IP');
if (!accountResult.success) throw new Error('ACCOUNT_TEMPORARILY_LOCKED');
}
安全的密码哈希(Argon2id):
import { hash, verify } from 'argon2';
export const hashPassword = (password: string) =>
hash(password, { type: 2 /* argon2id */, memoryCost: 65536, timeCost: 3, parallelism: 4 });
export const verifyPassword = (storedHash: string, password: string) =>
verify(storedHash, password);
基于 TOTP 的 MFA:
import { authenticator } from 'otplib';
export function generateMFASecret(): string {
return authenticator.generateSecret(32);
}
export function verifyTOTP(secret: string, token: string): boolean {
authenticator.options = { window: 1 }; // Allow ±30-second drift only
return authenticator.verify({ token, secret });
}
安全的会话 Cookie:
// Set session cookies with httpOnly, Secure, SameSite=Strict
response.cookies.set('session_token', token, {
httpOnly: true, // Not accessible to JavaScript — prevents XSS theft
secure: true, // HTTPS only
sameSite: 'strict', // CSRF protection
maxAge: 30 * 24 * 60 * 60,
path: '/',
});
针对敏感账户变更发送安全提醒邮件: 发生以下情况时,务必通过电子邮件通知客户:
- 密码已更改
- 电子邮件地址已更改
- 有新设备或新位置登录
- MFA 已禁用
最佳实践
- 尽可能使用无密码登录——Shopify 的新客户账户使用一次性验证码,可彻底消除凭据填充攻击面
- 对“未找到用户”和“密码错误”返回相同的错误信息——切勿透露具体是哪一项出错;这可以防止用户枚举
- 提供 MFA,但仅要求管理员和高价值账户启用——要求所有客户使用 MFA 会增加客户流失;可用于 B2B、管理员,以及保存了付款方式的客户
- 针对每项敏感变更发送安全提醒邮件——密码变更、电子邮件地址变更、新设备登录和 MFA 变更都必须立即触发通知,发送至客户已确认的电子邮件地址
- 每季度检查并轮换管理员凭据——管理员账户一旦遭到入侵,攻击者就可能获取所有客户数据
- 使用社交登录(Google/Apple)作为更安全的替代方案——这些提供商会处理密码安全,并且可能要求用户启用自己的 MFA
常见陷阱
| 问题 | 解决方案 |
|---|---|
| WooCommerce 登录没有速率限制 | 在任何线上 WooCommerce 网站上立即安装 Wordfence 或 Limit Login Attempts Reloaded |
| 管理员账户因凭据填充攻击而遭入侵 | 为所有管理员用户启用 2FA;为每个管理员账户使用强且唯一的密码;切勿在不同服务间重复使用管理员凭据 |
| TOTP 验证码可以无限期有效(自定义构建) | 在 otplib 中使用 window: 1,仅接受 ±30 秒的时差;绝不接受超过 90 秒的验证码 |
| 刷新令牌存储在 localStorage 中 | 仅将刷新令牌存储在 httpOnly Cookie 中;JavaScript 可以访问 localStorage,且它容易受到 XSS 攻击 |
| 通过轮换电子邮件地址变体绕过速率限制 | 在应用账户级速率限制前,将电子邮件地址标准化(转为小写,并移除 @ 前的 + 别名) |
相关技能
- @secure-checkout
- @fraud-detection
- @gdpr-ecommerce
- @bot-protection