Closed mei23 closed 1 year ago
Fix https://github.com/mei23/misskey/issues/4748
inboxのサイズリミットが1mb=>64kbになります AP inboxでdigest headerとbodyとを検証していないのを修正。 AP inboxでhost headerと自ホストとを検証していないのを修正。 HTTP Signatureの署名対象ヘッダに、(request-target), digest, host, date が含まれてない場合はエラーにするように。
(request-target)
digest
host
date
dateが300秒以上ずれている場合 (主にどちらかの時計が狂っている場合) 弾かれるようになります。 この仕様はhttp-signatureのclock-skewによるもの https://github.com/TritonDataCenter/node-http-signature/blob/master/http_signing.md#clock-skew
digest計算のためにJSON parse前の生のbodyが必要になるが、ctx.request.rawBodyは型定義的に使用できそうに見えるものの、実際はkoa-bodyparserの機能なためそれを使用してなければ使用できません。(現在はkoa-json-bodyを使用)
ctx.request.rawBody
koa-json-body
koa-bodyparserでもいいものの、JSON parseが回りくどいのと型周りが嫌なので、依存先のco-bodyを使用しています。 また、オプションについてはraw-bodyも見ると良いです。
https://github.com/mei23/misskey-v11/commit/ee8a03997cdd050ad01e120b27b9de6e89eb731b
Summary
Fix https://github.com/mei23/misskey/issues/4748
inboxのサイズリミットが1mb=>64kbになります AP inboxでdigest headerとbodyとを検証していないのを修正。 AP inboxでhost headerと自ホストとを検証していないのを修正。 HTTP Signatureの署名対象ヘッダに、
(request-target)
,digest
,host
,date
が含まれてない場合はエラーにするように。dateが300秒以上ずれている場合 (主にどちらかの時計が狂っている場合) 弾かれるようになります。 この仕様はhttp-signatureのclock-skewによるもの https://github.com/TritonDataCenter/node-http-signature/blob/master/http_signing.md#clock-skew
rawBodyの取得について
digest計算のためにJSON parse前の生のbodyが必要になるが、
ctx.request.rawBody
は型定義的に使用できそうに見えるものの、実際はkoa-bodyparserの機能なためそれを使用してなければ使用できません。(現在はkoa-json-body
を使用)koa-bodyparserでもいいものの、JSON parseが回りくどいのと型周りが嫌なので、依存先のco-bodyを使用しています。 また、オプションについてはraw-bodyも見ると良いです。