このチュートリアルを通じて完成した皆さんのマイクロブログは、残念ながらまだ実際の使用には適していません。特にセキュリティ面で多くの脆弱性があるため、実際に使用するのは危険かもしれません。

皆さんが作成したマイクロブログをさらに発展させたい方は、以下の課題を自分で解決してみるのもよいでしょう:

  • 現在は認証が一切ないため、誰でもURLさえ知っていれば投稿ができてしまいます。ログインプロセスを追加してこれを防ぐにはどうすればよいでしょうか?

  • 現在の実装では、ActivityPubを通じて受け取ったNoteオブジェクト内のHTMLをそのまま出力するようになっています。そのため、悪意のあるActivityPubサーバーが<script>while (true) alert('べー');</script>のようなHTMLを含むCreate(Note)アクティビティを送信する攻撃が可能です。これはXSS脆弱性と呼ばれます。このような脆弱性はどのように防ぐことができるでしょうか?

  • SQLiteデータベースで次のSQLを実行して、私たちが作成したアクターの名前を変更してみましょう:

    UPDATE actors SET name = 'Renamed' WHERE id = 1;
    

    このようにアクターの名前を変更した場合、他のMastodonサーバーで変更された名前が適用されるでしょうか?適用されない場合、どのようなアクティビティを送信すれば変更が適用されるでしょうか?

  • アクターにプロフィール画像を追加してみましょう。プロフィール画像を追加する方法が気になる場合は、fedify lookupコマンドを使用して既にプロフィール画像があるアクターを検索してみてください。

  • 他のMastodonサーバーで画像が添付された投稿を作成してみましょう。私たちが作成したタイムラインでは、投稿に添付された画像が表示されません。どうすれば添付された画像を表示できるでしょうか?

  • 投稿内で他のアクターをメンションできるようにしてみましょう。メンションした相手に通知を送るにはどうすればよいでしょうか?ActivityPub.AcademyActivity Logを活用して方法を探してみてください。