mcpField
A
account-security

account-security

github.com/finsilabs安全6083 次安装1 周前更新
代码仓库

关于 account-security

面向电商团队的账户安全技能,适用于构建或审查托管平台及自定义平台上的客户账户。内容按平台说明登录滥用防护、MFA、社交登录和账户接管风险的处理方式。

主要功能

  1. 01按平台提供安全指导
  2. 02暴力破解与速率限制控制
  3. 03MFA 设置与实现
  4. 04社交登录选项
  5. 05密码与会话保护
  6. 06账户接管提醒实践

适用场景

  1. 01审查店铺账户防护措施
  2. 02为 WooCommerce 添加登录滥用控制
  3. 03规划管理员或高价值客户的 MFA
  4. 04为自定义店铺构建安全控制

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill account-security

安装后在 Claude Code 中输入/account-security确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

tile.json
evals/login-rate-limiting-and-brute-force-prot/
criteria.json
task.md
evals/password-hashing-breach-detection-and-mf/
criteria.json
task.md
evals/session-management-and-refresh-token-rot/
criteria.json
task.md

详细介绍

账户安全

概述

客户账户中保存着付款方式、忠诚度积分、购买历史记录和收货地址,因此很容易成为凭证填充攻击和账户接管的高价值目标。有效的账户安全措施包括:在登录页面防范暴力破解、检测已泄露的密码、提供可选的多重身份验证(MFA),以及检测账户接管模式中的异常行为。具体方案很大程度上取决于你的平台:Shopify 在平台层面管理大多数安全控制,而 WooCommerce 则需要额外安装插件。

何时使用此技能

  • 从头构建客户账户系统时
  • 审核现有账户系统是否存在安全弱点时
  • 发现凭证填充攻击时(来自分布式 IP 的登录失败率很高)
  • 为高价值客户添加可选或必需的 MFA 时
  • 将“使用 Google/Apple 登录”作为比密码更安全的替代方案时

核心说明

步骤 1:了解平台的安全模型
平台平台负责处理的事项需要配置的事项
ShopifySSL/TLS、登录暴力破解防护、PCI 合规性、服务器端安全客户账户设置、是否要求电话验证、用于 Google/Apple 登录的社交登录应用
WooCommerce基本登录表单安装 Wordfence(免费版),以实现暴力破解防护、限制登录尝试、双重身份验证和登录安全监控
BigCommerceSSL/TLS、由平台管理的账户安全、基本暴力破解防护为管理员用户启用双重身份验证;面向客户的双重身份验证需要使用应用
Custom / Headless无——所有安全控制都需要自行构建速率限制、密码哈希、MFA、会话管理、ATO 检测
步骤 2:针对平台设置账户安全

Shopify

Shopify 在平台层面处理大多数客户账户安全事项——你无需自行管理 SSL、暴力破解检测或密码哈希。

启用新客户账户(无密码登录): Shopify 提供两种账户体验:

  1. 前往 Settings → Customer accounts
  2. New customer accounts(推荐):客户使用发送到其邮箱或手机的一次性 6 位验证码登录;无需担心密码被盗或遭暴力破解
  3. Classic customer accounts:传统的邮箱/密码账户

切换到新客户账户(无密码)可消除最常见的攻击途径:凭证填充和暴力破解。

为管理员账户启用两步验证:

  1. 前往 Settings → Users and permissions
  2. 点击某个用户 → 启用 Two-step authentication required
  3. 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(免费,推荐):

  1. 从 WordPress 插件目录安装并启用 Wordfence Security
  2. 前往 Wordfence → Login Security
  3. 启用 Brute Force Protection:
    • 失败尝试 X 次后锁定(默认:20 次)
    • 锁定时长(默认:4 小时)
    • 统计 X 分钟内的失败次数(默认:5 分钟)
  4. 为管理员用户启用 Two-Factor Authentication(Wordfence 支持验证器应用 TOTP)

Limit Login Attempts Reloaded(仅用于速率限制的免费替代方案):

  1. 安装 Limit Login Attempts Reloaded
  2. 配置:失败 4 次后锁定,锁定 20 分钟,锁定 4 次后通过电子邮件通知

面向客户的 2FA:

  1. 安装 miniOrange 2 Factor Authentication 或 WP 2FA 插件
  2. 配置为允许(或要求)客户使用 2FA
  3. WP 2FA 支持 TOTP(Google Authenticator、Authy)、电子邮件验证码和备用验证码

WooCommerce 社交登录: 安装 Nextend Social Login(免费/高级版)——支持在 WooCommerce 登录和注册页面使用 Google、Facebook、Apple 和 Twitter/X 登录。

检测已泄露的密码: 安装 WPassword,或在注册和更改密码时实现自定义检查,通过 HaveIBeenPwned API 进行验证。


BigCommerce

管理员双重身份验证:

  1. 前往 Settings → Account Settings → Security
  2. 启用 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

评论

支持 Markdown