セキュリティ監査
AIにアプリのセキュリティ状況のレビューを依頼し、以下のベストプラクティスに従い、シークレットは Settings ページで管理してください。
Proyectaのセキュリティは、プラットフォームのデフォルト設定、AIによるレビュー、そしていくつかの習慣の組み合わせで対応しています。以下に考え方を説明します。
セキュリティ監査を実行する
Section titled “セキュリティ監査を実行する”Command Palette(Cmd+K / Ctrl+K)を開き、Run Security Audit を選択します。これにより包括的なセキュリティプロンプトがAIに送信され、コードベース全体を読み取ったうえで、優先度付きの発見事項と具体的な修正内容とともに脆弱性を報告します。
監査でチェックされる項目:
- ソースファイルにハードコードされたAPIキー、トークン、パスワード
VITE_プレフィックスの環境変数によるクライアントへのシークレット漏洩- APIエンドpointにおけるサーバーサイドの入力バリデーション不足
- 認証が設定されていないページやAPIエンドpoint
- エスケープされていないユーザーコンテンツ(XSSリスク)
- 依存関係の脆弱性
- 混在コンテンツやハードコードされた
http://URL - ファイルアップロードのバリデーション不足
チャットからセキュリティ監査を手動で実行したり、特定のエリアに絞って実行することもできます:
"Review my checkout flow for security issues""Check the admin pages — who can access what?""Look at every endpoint that writes to the database and tell me if any of them are missing authorization"
セキュリティのベストプラクティス
Section titled “セキュリティのベストプラクティス”シークレットを安全に保管する
- すべてのAPIキー、データベース認証情報、サードパーティトークンは、Settingsページの 環境変数 セクションに保存してください
- シークレットをチャットメッセージに貼り付けたり、コードにcommitしたりしないでください
- シークレットが漏洩した場合は、すぐにサードパーティプロバイダー側で無効化し、新しいものを作成してください
アクセスを制限する
- アプリにロールベースの権限を実装する(例:
"Add admin and member roles. Only admins can access /admin pages.") - 機密ページやエンドpointは認証済みユーザーのみに制限する
- ユーザー入力は必ずサーバーサイドでバリデーションし、クライアントサイドのみに頼らない
HTTPSをすべての場所で使用する
- 公開されたすべてのProyectaアプリは自動的にHTTPSで配信されます
- SSL証明書はプロビジョニングおよび自動更新されます
- カスタムドメインでも、DNSが正しく設定されれば同様に適用されます
依存関係を最新の状態に保つ
- 定期的にAIに依頼してください:
"Check my dependencies for known security vulnerabilities and upgrade the vulnerable ones." - AIによる変更内容を確認してください — 依存関係のアップグレードには破壊的変更が含まれる場合があります
大きな変更後に監査を実施する
- 認証、決済、ファイルアップロード、またはユーザーデータに関わる機能を追加した後は、監査を再実行してください
- 初めて本番環境にpublishする前に、全体的なチェックを行ってください
Proyectaが代わりに対応すること
Section titled “Proyectaが代わりに対応すること”*.proyecta.liveサブドメインの HTTPSと証明書- 環境変数 — シークレットは専用のシークレットストアに保存され、アプリのbackend(Convex)と同期されます。コードベースにはcommitされません。なお、シークレットはプロジェクトへのアクセス権を持つワークスペースメンバーには表示されます。
- 隔離されたランタイム — 各プロジェクトは独自のコンテナ内で実行されるため、開発環境の問題が他のユーザーに影響することはありません
- 初めてpublishする前に監査を実行する — 事前にチェックすることで、問題が本番環境に反映される前に発見できます。
- 大きな変更後に再実行する — 認証、決済、ファイルアップロードの追加は、新たな攻撃対象領域をもたらします。
- スコープを絞る — 特定のエリアに絞った監査は、アプリ全体のチェックよりも高速かつ詳細に行えます。