From e2556189decf5d6e6c9923a0c81c6214749b40b6 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Sun, 31 Oct 2021 18:01:16 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=89=8A=E9=99=A4=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=83=8E=E3=83=BC=E3=83=88=E3=82=84=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=BC=E3=81=8C=E3=83=AA=E3=83=A2=E3=83=BC=E3=83=88=E3=81=8B?= =?UTF-8?q?=E3=82=89=E5=8F=82=E7=85=A7=E3=81=95=E3=82=8C=E3=82=8B=E3=81=A8?= =?UTF-8?q?=E5=BE=A9=E6=B4=BB=E3=81=99=E3=82=8B=E3=81=93=E3=81=A8=E3=81=8C?= =?UTF-8?q?=E3=81=82=E3=82=8B=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3=20(#7918?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix #7557 * CHANGELOG * Fix user * CHANGELOG * Tune CHANGELOG * Tune CHANGELOG * resolver * Remove check * Remove import * CHANGELOG * Tune Co-authored-by: syuilo --- CHANGELOG.md | 1 + src/remote/activitypub/models/note.ts | 4 ++++ src/remote/activitypub/models/person.ts | 5 +++++ 3 files changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae652c310a..260d15af15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ ### Bugfixes - リレー向けのActivityが一部実装で除外されてしまうことがあるのを修正 +- 削除したノートやユーザーがリモートから参照されると復活することがあるのを修正 ## 12.94.1 (2021/10/25) diff --git a/src/remote/activitypub/models/note.ts b/src/remote/activitypub/models/note.ts index cf68f3005d..492dc05248 100644 --- a/src/remote/activitypub/models/note.ts +++ b/src/remote/activitypub/models/note.ts @@ -288,6 +288,10 @@ export async function resolveNote(value: string | IObject, resolver?: Resolver): } //#endregion + if (uri.startsWith(config.url)) { + throw new StatusError('cannot resolve local note', 400, 'cannot resolve local note'); + } + // リモートサーバーからフェッチしてきて登録 // ここでuriの代わりに添付されてきたNote Objectが指定されていると、サーバーフェッチを経ずにノートが生成されるが // 添付されてきたNote Objectは偽装されている可能性があるため、常にuriを指定してサーバーフェッチを行う。 diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts index 84b2f0c51c..eb8c00a10b 100644 --- a/src/remote/activitypub/models/person.ts +++ b/src/remote/activitypub/models/person.ts @@ -29,6 +29,7 @@ import { toArray } from '@/prelude/array'; import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata'; import { normalizeForSearch } from '@/misc/normalize-for-search'; import { truncate } from '@/misc/truncate'; +import { StatusError } from '@/misc/fetch'; const logger = apLogger; @@ -116,6 +117,10 @@ export async function fetchPerson(uri: string, resolver?: Resolver): Promise { if (typeof uri !== 'string') throw new Error('uri is not string'); + if (uri.startsWith(config.url)) { + throw new StatusError('cannot resolve local user', 400, 'cannot resolve local user'); + } + if (resolver == null) resolver = new Resolver(); const object = await resolver.resolve(uri) as any;