以下の動画を閲覧し、勉強させていただいております。その中で、疑問に思ったことを質問させてください。
https://youtu.be/9ybtC6oxNIc
以上が質問になります。何卒よろしくお願いいたします。
セキュリティ対策のポイントになります。
CSRF対策:Next.jsにはCSRF対策として、APIエンドポイントにトークンを使った認証を組み込む方法があります。例えば、ユーザーがログインした時にサーバーサイドでCSRFトークンを生成し、それをクッキーに保存します。そして、その後の重要なAPIリクエスト(POST、DELETEなど)において、そのトークンをリクエストヘッダーに含めて送信し、サーバーサイドでそのトークンを検証します。
CORS設定:Next.jsではAPIルートにCORSミドルウェアを設定することで、CORSポリシーをカスタマイズできます。
SQL Injection対策:Prismaは型安全なORMであり、ユーザー入力をそのままクエリに含めることが基本的にありません。ただし、生のSQLクエリ(Prismaの$queryRaw
や$executeRaw
を使用する場合)を使用する場合は注意が必要です。
パスワードの安全な管理:パスワードをハッシュ化する際には、bcryptやargon2などのライブラリを利用できます。
セキュリティヘッダーの使用:Next.jsではnext-secure-headers
というライブラリを使用することで、セキュリティヘッダーを設定することができます。インストール後、next.config.js
に設定します。
依存関係の管理:npmではnpm audit
コマンドを使用して、プロジェクトの依存関係の脆弱性を調査できます。また、GitHubではDependabotという機能を利用して、自動的に依存関係の更新を行うことができます。
エラーハンドリング:敏感な情報が含まれる可能性のあるエラーメッセージをユーザーに返すのではなく、一般的なエラーメッセージを返すようにしましょう。詳細なエラーメッセージはログとしてサーバーに保存するようにします。
以上のように、各種セキュリティ対策を行うことができます。
全ての設定が必ずしも必要とは限らないため、アプリケーションの特性や要件に応じて適切な対策を選択してみてください。
はるさん、ありがとうございます!!やはり、このままだとCSRFの危険性があるんですね。その他のCORSやセキュリティヘッダーなど、勉強になりました。こちらを参考に、まずはCSRF対策からやってみようと思います。ありがとうございます🙇♂️