Skip to content

竞赛风控数据说明 ​

Neuro OJ 的竞赛风控只提供人工复核线索,不做自动判罚。本页说明已落地的「提交来源 IP」与「代码相似度」两类线索。

设计立场

所有风控结果都不自动封禁账号、取消成绩或修改排名。共享网络、校园网、企业 NAT、代理和动态地址都可能让多个无关账号使用同一 IP,因此同 IP / 高相似度都不等于作弊结论。

提交来源 IP ​

竞赛代码或产物提交成功时,服务端记录经 TRUSTED_PROXIES 可信代理链解析后的来源 IP。客户端自行提交的 X-Forwarded-For、X-Real-IP 在直连或非可信代理场景会被忽略;无法安全解析时不保存 IP(记为 null)。

用途:仅限竞赛期间的账号关联线索、提交时间线和人工复核。

管理员可见范围:可在竞赛管理中查看同 IP 多账号候选组和提交时间线。接口只返回复核所需的用户、题目、语言、状态和时间,不返回邮箱、源代码或评测输出。访问需要 contest:anti_cheat_read 权限,应遵循最小权限与审计要求。

保留策略:默认保留 180 天(ANTI_CHEAT_IP_RETENTION_DAYS,0 表示禁用自动清理)。清理任务只把提交记录中的来源 IP 置空,保留提交、代码和成绩用于正常业务及成绩申诉。

保留期不得超过合规上限

保留期可按赛事申诉周期调整,但不得超过组织方隐私政策和适用法规要求。缩短保留期只影响 IP 字段的清理,不会删除提交与成绩。

代码相似度 ​

代码相似度检测已作为风控面板的一个分栏落地(管理后台「相似提交」),与 IP 关联分栏并列。它按题目 × 语言分桶(跨题目/跨语言比较无意义),对提交代码做 token 规范化 → winnowing 指纹 → Jaccard 相似度,输出互相高度相似的提交对。

相似度结果是线索,不是判罚

基于代码 token 指纹的相似度仅供人工复核:阈值过高会漏掉改名洗稿,过低会放大同思路独立实现的误报。接口不返回源代码本身,只返回提交标识、用户、题目、语言、相似度与指纹统计。

  • 默认阈值 0.8(可调,范围 (0, 1]);默认返回前 50 对,单次上限 200 对。
  • 单次分析的候选提交数默认上限 200,超限时建议用 problem_id 缩小到单题。
  • 候选不会自动封禁账号、取消成绩或修改排名;证据留存与申诉流程另见运营规范。

Neuro OJ 是一个独立社区项目,与 CCF、LMCC、IOAI 及 NOAI 无官方关系。