実現したいこと
ログイン不要で使用できる翻訳サイトをnext.jsにて作成しています。
作成にあたりサイト内にAPIを設置するのですが、そのAPIの保護方法について教えていただきたいです。
発生している問題・分からないこと
ログイン不要で使用できるようにしたいため、APIの保護方法が全く分かりません。
具体的にはAPIを自分の作成するサイト以外から使用できないようにしたいのです。
自分のサイトのフロントエンドのみリクエストを許可し、別の人が作ったプログラムなどからリクエストをしても使用できないように、ということです。
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
JWTトークンを利用しようかと思って以下のような実装をした
サイトにアクセスすると自動的にトークンを発行
↓
HttpOnlyCookieにトークンを保存
↓
トークンとともにAPIにアクセス
↓
トークンの期限が切れていたら再度トークン取得
でもこれでは意味ないのでは、と思いました。
攻撃者がトークンを発行するAPIを叩いたら不正利用できてしまうし、これだけならばトークンを使っても使わなくてもリスクはそこまで変わらないのでは、と....
補足
提案いただけますと幸いです。
こう検索すれば出てくるよなどでも構いません。
DeepLの場合APIリクエストを単純に再送信してもエラーが出てしまうのですが、どうしてなのでしょうか。
どういった仕組みなのでしょうか。