user-content-safety

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

user-content-safety

user-content-safety

The moment strangers can put content in front of other strangers, the site needs a way to hear about abuse and a way to act on it, and its rendering must not let content attack visitors.
一旦陌生人可以把内容展示给其他陌生人,网站就需要有渠道接收滥用举报并采取处置措施,同时其渲染机制不得让内容攻击访问者。

Activate when

启用条件

  • Posts, comments, reviews, profiles with bios/avatars, uploads, messages, public galleries, or shared links exist.
  • Not when users only see their own private data, or when content is admin-authored only.
  • 存在帖子、评论、评论文章、包含个人简介或头像的个人资料、上传内容、消息、公开图库或共享链接。
  • 如果用户只能看到自己的私人数据,或者内容完全由管理员创作,则不适用。

Working alone

独立工作

This skill is self-contained. Its companions (declared in its metadata) are skills whose method it may need to do its own promised work. Use of a companion can be conditional: declaring one does not mean running it. When a companion's lane applies, use the skill if it is installed; if not, follow its short entry in references/companion-methods.md and say in your report which lanes ran inline at reduced depth. Never skip an applicable lane silently. Skills mentioned here only for escalation, referral, documentation, or optional deeper follow-up are not dependencies: report the hand-off and finish honestly.
Companions:
design-system-reconnaissance
.
此 skill 是自包含的。它的 companions(在其 metadata 中声明)是指它可能需要调用其方法来完成自身承诺工作的 skills。使用 companion 可以是有条件的:声明一个 companion 并不意味着一定会运行它。当某个 companion 的工作范围适用时,如果该 skill 已安装,请使用它;如果尚未安装,则遵循 references/companion-methods.md 中的简要说明,并在报告中说明哪些工作范围以内联方式按较低深度执行。绝不静默跳过任何适用的工作范围。此处仅针对升级、转介、文档记录或可选深入跟进而提及的 skills 不属于依赖项:应报告交接情况,并如实完成工作。
Companions:
design-system-reconnaissance
。

Inspect

检查

  1. Where content appears and to whom (public, logged-in, group, private link). Anonymous posting? Signup friction?
  2. Reporting: a visible way to report content or a user; the report goes somewhere real (email inbox, queue) and is monitored; confirmation is shown.
  3. Moderation hooks: can the owner remove content and suspend users (
    admin-authorization
    ,
    admin-dashboard
    only if none exists and it is needed)? Are actions logged (
    admin-audit-log
    )? Any automated filtering the copy claims?
  4. Abuse controls: rate limits on posting, signup, and uploads; spam prevention (captcha with privacy trade-offs noted); link/URL handling (
    rel="ugc nofollow"
    ); blocking.
  5. Rendering safety: user text rendered as text or sanitized (XSS:
    dangerouslySetInnerHTML
    ,
    innerHTML
    , markdown renderers without sanitization); user-supplied URLs in
    href
    /
    src
    (javascript: URLs); uploads validated by type/size, served from a separate origin or with safe headers, not executable; image metadata (EXIF location) stripped where relevant.
  6. Privacy of contributors: public display of email/full name by default; deletion of authored content (
    data-rights
    ).
  7. Rules and enforcement: community rules or acceptable-use text exist and match what moderation can do (
    terms-of-service
    ).
  8. Takedown/IP contact for infringement reports (
    legal-identity-notices
    ).
  9. Children: if minors may post, escalate (
    minors-readiness
    ).
  1. 内容出现在哪里以及面向谁(公开、登录后、群组、私有链接)。允许匿名发布吗?注册门槛如何?
  2. **举报:**有可见的举报内容或用户的方式;举报会进入真实目的地(电子邮件收件箱、队列)并受到监控;会显示确认信息。
  3. **审核钩子:**产品所有者能否删除内容并停用用户(仅当不存在且确有需要时,才使用
    admin-authorization
    、
    admin-dashboard
    )?操作是否被记录(
    admin-audit-log
    )?文案是否声称存在任何自动过滤功能?
  4. **滥用控制:**对发布、注册和上传设置速率限制;垃圾内容防护(captcha,同时说明隐私权衡);链接或 URL 处理(
    rel="ugc nofollow"
    );屏蔽机制。
  5. **渲染安全:**用户文本按文本渲染或经过清理(XSS:
    dangerouslySetInnerHTML
    、
    innerHTML
    、未进行清理的 markdown 渲染器);用户提供并用于
    href
    或
    src
    的 URL(
    javascript:
    URL);上传文件按类型和大小进行验证,从独立源提供或附加安全 headers,且不可执行;在相关场景中移除图片元数据(EXIF 位置信息)。
  6. **贡献者隐私:**默认公开显示电子邮件或全名;删除所创作的内容(
    data-rights
    )。
  7. **规则与执行:**存在与实际审核能力相符的社区规则或可接受使用文本(
    terms-of-service
    )。
  8. 下架或 IP 联系人,用于受理侵权举报(
    legal-identity-notices
    )。
  9. **儿童:**如果未成年人可以发布内容,则升级处理(
    minors-readiness
    )。

Evidence that counts

有效证据

Label each claim OBSERVED, SOURCE-INDICATED, DECLARED, INFERRED, UNKNOWN, or REVIEW REQUIRED. UNKNOWN is never a pass and never a failure.
  • Unsafe rendering is SOURCE-INDICATED until you prove it on staging with an inert test payload (e.g. text containing
    <b>x</b>
    renders as text).
  • A "Report" button that goes nowhere is a finding; test that the report arrives.
将每项主张标记为 OBSERVED、SOURCE-INDICATED、DECLARED、INFERRED、UNKNOWN 或 REVIEW REQUIRED。UNKNOWN 既不表示通过,也不表示失败。
  • 在 staging 上使用惰性测试载荷证明之前,不安全渲染应标为 SOURCE-INDICATED。例如,包含
    <b>x</b>
    的文本被渲染为文本。
  • 一个“举报”按钮如果无实际去向,就是一项发现;应测试举报是否确实送达。

May change

可以更改

Design first. Before creating or changing anything visible, inspect the project's existing design system (
design-system-reconnaissance
) and build from its tokens and components, by the component ladder: reuse, compose, extend, and only then create a matching component. Never impose a ReadyVibe look on the user's site.
Add/repair a report link to an existing inbox or form; sanitize or escape rendering; add
rel="ugc nofollow noopener"
; add basic rate limits where the project has a pattern; tighten upload validation. Do not build a moderation platform, invent an inbox, or claim moderation exists.
**设计优先。**在创建或更改任何可见内容之前,先检查项目现有的设计系统(
design-system-reconnaissance
),并依据其 design tokens 和 components 进行构建,按照 component ladder 的顺序执行:reuse、compose、extend,只有在前述方式均不适用时,才创建匹配的 component。绝不能将 ReadyVibe 风格强加到用户的站点上。
将举报链接添加至现有收件箱或表单,或修复已有链接;对渲染进行清理或转义;添加
rel="ugc nofollow noopener"
;在项目已有相应模式的地方添加基础速率限制;收紧上传验证。不要构建审核平台,不要虚构收件箱,也不要声称存在审核机制。

Must not claim

不得声称

"Safe", "moderated", "abuse-free", "we review all content", or anything about legal immunity or liability.
“安全”、“已受审核”、“无滥用”、“我们会审核所有内容”,或任何有关法律豁免或责任的说法。

Verify

验证

On staging: post inert HTML/script-like text and confirm it is inert; submit a report and confirm delivery; hit the posting endpoint repeatedly to confirm limits; upload a disallowed type and confirm rejection.
在 staging 上:发布惰性的类 HTML 或脚本文本,并确认其保持惰性;提交举报并确认送达;反复调用发布 endpoint 以确认限制;上传不允许的类型并确认被拒绝。

Escalate

升级处理

Public posting by minors, adult content, harassment risk, legal-content categories (hate, exploitation), and any real report of harm: human review and, for serious cases, legal counsel.
未成年人公开发布内容、成人内容、骚扰风险、涉及法律问题的内容类别(仇恨、剥削),以及任何真实发生的伤害报告:应交由人工审核;严重案件还应交由法律顾问处理。

No change is valid when

无需更改的有效情形

The product has no user-visible user content. Record the routes and forms checked.
产品没有用户可见的用户内容时,不做更改也是有效结果。记录已检查的 routes 和 forms。