セキュリティ

生徒のアカウントとその成果物を守るためにしていること、そして見落としがあったときの知らせかた。

最終更新 22 August 2026。

アカウント

  • パスワードはハッシュ化されていて、読める形で保存されることはなく、メールでこちらに送られることもありません。
  • 代わりにGoogleでログインすることもできます。その場合、なくすパスワードが1つ増えることはありません。
  • メールアドレスは、アカウントが使えるようになる前に確認されます。
  • セッションは、JavaScriptから読めず、こちらにしか送られないCookieに保持されます。

自分の教材

  • アップロードしたものは非公開のオブジェクトストレージに置かれます。ブラウザがそのストレージと直接やりとりすることはありません。ファイルはすべてアプリを通して取り出され、アプリが先に本人のものかを確認します。
  • ファイルのパスはサーバーが生成します。パスを指定してファイルを要求することはできません。
  • アップロードは名前だけでなくファイルシグネチャで確認され、サイズの上限があります。
  • 登録する前にトップページで試したものは、その試用の範囲にとどまり、24時間以内に削除されます。

アプリケーション

  • すべてHTTPSで配信していて、HSTSを使っています。
  • リクエストごとのnonceを使ったContent Security Policyが、ページの中で動けるものを制限します。
  • データを変えるリクエストは、クロスサイトリクエストフォージェリを防ぐためにオリジンを確認します。
  • ログイン、クラスコード、AIの呼び出し、トップページの匿名ツールの前には、レート制限があります。
  • 管理者権限はサーバーの設定でのみ与えられます。アプリの中から与えられる権限はありません。

決済

カード情報はStripeまたはMollieに直接送られ、こちらのサーバーには届きません。決済のWebhookは署名を検証したうえで一度だけ処理されるので、同じメッセージが送り直されても、二重請求や二重付与にはなりません。

脆弱性の報告

セキュリティ上の問題を見つけたら、ほかの誰かに話す前にこちらに知らせて、直すための妥当な猶予をください。報告はお問い合わせページから、再現できるだけの詳しさを添えて送ってください。

他人のデータを尊重した善意の調査について、こちらから責任を追及することはありません。自分のものではないアカウントにアクセスしたり変更したりしないこと、サービス妨害のテストを行わないこと、そして確かめられた時点でやめること。

公開前に要確認: セキュリティ専用の連絡先アドレス、公表までの猶予期間、報奨金を出すかどうか、そしてそこを指す/.well-known/security.txt。