diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2021-10-31 18:01:16 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-31 18:01:16 +0900 |
| commit | e2556189decf5d6e6c9923a0c81c6214749b40b6 (patch) | |
| tree | 04b300aea9e25a8a9f4225f355f737ab19c42b33 /src | |
| parent | ユーザー情報のhasUnreadChannelが常にfalseになってしまって... (diff) | |
| download | misskey-e2556189decf5d6e6c9923a0c81c6214749b40b6.tar.gz misskey-e2556189decf5d6e6c9923a0c81c6214749b40b6.tar.bz2 misskey-e2556189decf5d6e6c9923a0c81c6214749b40b6.zip | |
fix: 削除したノートやユーザーがリモートから参照されると復活することがあるのを修正 (#7918)
* Fix #7557
* CHANGELOG
* Fix user
* CHANGELOG
* Tune CHANGELOG
* Tune CHANGELOG
* resolver
* Remove check
* Remove import
* CHANGELOG
* Tune
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Diffstat (limited to 'src')
| -rw-r--r-- | src/remote/activitypub/models/note.ts | 4 | ||||
| -rw-r--r-- | src/remote/activitypub/models/person.ts | 5 |
2 files changed, 9 insertions, 0 deletions
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<Use export async function createPerson(uri: string, resolver?: Resolver): Promise<User> { 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; |