🔒

Nuxt Securityの導入

2024/12/21に公開

Nuxt Securitを導入してできることのまとめ

はじめに

Nuxt3でのみ使用できるNuxt Securityを案件で使用することになったので何ができるか事前に調査しました。
クレジットカード使用のセキュリティ対策をするにあたってNuxt3プロジェクトででできることをする対応の一環です。
このモジュールを使用することで何ができるのか、セットアップの方法についてまとめていきます。
私はセキュリティに関して明るくなく、今回調査するにあったって始めて目にする用語も多々ありました。
なんとなく概念は理解してまとめたつもりですが、誤りがある場合もあるかと思います🙇‍♂️
導入する際には改めて調査して導入していただくようお願いします。

🔸公式Docs
https://nuxt-security.vercel.app/getting-started/installation

Nuxt Securityの主な機能

1. セキュリティレスポンスヘッダー

デフォルトで以下のようなセキュリティヘッダーが自動的に設定されます。

  • Content Security Policy (CSP)
  • X-Frame-Options
  • X-XSS-Protection
  • X-Content-Type-Options

特にSSGアプリケーションでのCSP設定が容易になります。
🔸CSPとは
https://developer.mozilla.org/ja/docs/Web/HTTP/CSP

2. リクエストの制限機能

下記のような設定でリクエスト制限ができます。
これによってDos攻撃などからプロジェクトを保護することができます。

export default {
 security: {
  rateLimiter: {
   tokensPerInterval: 150,
   interval: 'hour'
  },
  requestSizeLimiter: {
   maxRequestSizeInBytes: 2000000 // 2MB
  }
 }
}
  • リクエストレート制限
  • リクエストサイズ制限
  • DoS攻撃からの保護

🔸レートリミット参考記事
https://apidog.com/jp/blog/api-rate-limit/

3. XSS(クロスサイトスクリプティング)対策

  • GETリクエストのクエリパラメータの検証
  • POSTリクエストのボディ内容の検証
  • 悪意のあるコードの自動検出

4. CORS(クロスオリジンリソース共有)設定

CORSの設定もできます。
CORSエラーはよく目にするところなので気にかけたい。

export default {
 security: {
  cors: {
   origin: ['https://hogehoge.com'],
   methods: ['GET', 'POST']
  }
 }
}
  • オリジン制限
  • 許可するHTTPメソッドの設定
  • クレデンシャルの制御

🔸CORS参考記事
https://developer.mozilla.org/ja/docs/Web/HTTP/CORS

5. HTTPメソッド制限

export default {
 security: {
   allowedMethodsRestriction: {
   methods: ['GET', 'POST', 'PUT', 'DELETE']
  }
 }
}

特定のHTTPメソッドのみを許可し、それ以外のリクエストを自動的にブロックします。

6. CSRF(クロスサイトリクエストフォージェリ)保護

export default {
 security: {
   csrf: {
   cookie: {
    name: 'csrf_token'
   }
  }
 }
}
  • CSRFトークンの自動生成
  • リクエスト検証
  • セキュアなクッキー設定

🔸CSRF 参考記事
https://www.lanscope.jp/blogs/cyber_attack_pfs_blog/20231020_15621/

設定方法

下記のコマンドでプロジェクトにインストールします。

npx nuxi@latest module add security

nuxt.configにsecurityを追加して使用します。
Docsを参考にして必要な設定をしていきます。

export default {
  modules: ['nuxt-security'],
  security: {
   // 必要に応じて設定をカスタマイズ
  }
}

まとめ

Nuxt Securityモジュールを使用することで、導入は簡単にできますしセキュリティを強化することもできそうです。
Nuxt3プロジェクトでおこのモジュールに世話になる機会はまだまだありそうです。

Discussion