ログアウト中 ログイン

Cursor講座 第6章6.6節「CursorでTodoアプリのセキュリティチェックを実施する」




現在の見出し:6.6節:CursorでTodoアプリのセキュリティチェックを実施する

見出し一覧

  • 6.6節:CursorでTodoアプリのセキュリティチェックを実施する
  • - CursorのAI機能で行うセキュリティ診断と修正方法

【PR】『Python』を学べる企業・個人向けのプログラミングコース

CursorのAI機能で行うセキュリティ診断と修正方法

最後にCursorを使ってアプリのセキュリティチェックを実施します。Cursorのチャット欄に以下のプロンプトを入力・実行します。

このプロジェクトプロジェクトは特定の目的や目標を達成するために行われる一連の開発作業です。をリリース前に簡易的なセキュリティチェックしたいです。以下の観点でコード全体をレビューし、問題のある箇所があれば教えてください:

  1. ユーザー入力のバリデーションバリデーションは入力値が正しい形式や範囲に合致しているかどうかを検証することです。漏れ・サニタイズ不足(XSS/インジェクション)
  2. ローカルストレージやセッション管理におけるリスク
  3. APIAPIは、他のソフトやアプリが自分の機能を利用できるようにするためのインターフェースです。キーや認証情報のハードコーディングコーディングはコンピュータが理解できるようにプログラムを書く作業です。
  4. 外部ライブラリライブラリは再利用可能なソフトウェアの部品です。の安全性(既知の脆弱性など)
  5. 不要なconsole.logやデバッグデバッグはコンピュータプログラムの問題を特定して修正する作業です。コード
  6. パーミッション管理やアクセス制御の甘さ(特に管理機能がある場合)
  7. .envファイルや機密ファイルの誤公開リスク
  8. その他、フロントエンドフロントエンドはWebサイトやアプリのユーザーが直接操作する部分です。/バックエンドバックエンドはWebサイトやアプリケーションなどの裏側で動くシステムです。問わず基本的なセキュリティリスク

チェック対象:このプロジェクト全体(srcやapi、utilsなどすべて)

レビュー結果:問題のある箇所のファイル名と簡潔な説明つきで列挙してください。


CursorでTodoアプリのセキュリティチェックを実施する

セキュリティチェックのプロンプトを入力後、「Send」ボタンをクリックします。

CursorでTodoアプリのセキュリティチェックを実施する

上記のように各フォルダごとにセキュリティの観点でコードを確認していることがわかります。エラーチェックをした結果が下記の通りです。

エラー内容:

対応方法:

  • DarkModeToggle.tsxファイルを再作成してみましょう。ファイルが存在していても、何らかの理由で正しく認識されていない可能性があります。
  • ファイルを再作成しました。これで問題が解決するはずです。
  • アプリケーションを再起動してみてください:Apply to App.tsx → Run

追加の対策:

エラーメッセージ詳細:

  • Compiled with problems:
  • ERROR in src/App.tsx:5:32
  • TS2307: Cannot find module './components/DarkModeToggle' or its corresponding type declarations.
  • 該当コード: import { DarkModeToggle } from './components/DarkModeToggle';

対処の手順:

  • tsconfig.jsonファイルを確認
  • DarkModeToggle.tsxファイルの拡張子を変更
  • DarkModeToggle.tsxファイルを再作成
  • App.tsxのインポート文を修正
  • TypeScriptのキャッシュをクリア、node_modulesを再インストール

問題の解決方法:

  • DarkModeToggle.tsxファイルを削除して再作成
  • App.tsxのインポート文を修正
  • TypeScriptのキャッシュをクリア
  • node_modulesを再インストール(--legacy-peer-depsオプションを使用)
  • アプリケーションを再起動

これでDarkModeToggleコンポーネントが正しく認識され、エラーが解消されました。アプリケーションは正常に動作しているはずです。

セキュリティレビュー観点:

  • ユーザー入力のバリデーション漏れ・サニタイズ不足(XSS/インジェクション)
  • ローカルストレージやセッション管理におけるリスク
  • APIキーや認証情報のハードコーディング
  • 外部ライブラリの安全性(既知の脆弱性など)
  • 不要なconsole.logやデバッグコード
  • パーミッション管理やアクセス制御の甘さ(特に管理機能がある場合)
  • .envファイルや機密ファイルの誤公開リスク
  • その他、フロントエンド/バックエンド問わず基本的なセキュリティリスク

チェック対象:このプロジェクト全体(srcやapi、utilsなどすべて)

セキュリティレビュー結果:

  • ユーザー入力のバリデーション漏れ:
    • src/components/TodoForm.tsx: title.trim() のみでXSS対策が不十分
    • src/components/TodoItem.tsx: タイトルをそのまま表示しXSSリスクあり
  • ローカルストレージのリスク:
    • src/reducers/todoReducer.ts: JSONの検証が不十分
    • アクセス制限がなく、誰でも操作可能
  • APIキーや認証情報のハードコーディング: 現時点で問題なし
  • 外部ライブラリ:
  • 不要なデバッグコード: 現状問題なし
  • パーミッション管理: 認証機能が未実装、アクセス制限なし
  • .envファイル: .gitignoreには記載済みだが、将来のリスクあり
  • その他:
    • src/components/TodoList.tsx: resultにany型を使用
    • src/reducers/todoReducer.ts: エラーハンドリング不足

改善提案:

認証機能を追加する場合、ユーザー情報を保存するためにデータベースデータベースは情報を集めて整理し、保存しておくための仕組みです。との連携も必要になります。なので今回は「認証機能は一旦追加しな形で、問題点に対する改善を実施して下さい。」というプロンプトを実行します。

上記のようにチャット欄へ入力して「Send」をクリックします。

いくつかファイルでコードが修正されているので、「Accept all」ですべて反映させます。最後にターミナルで「npm start」コマンドを実行し、挙動に問題がないか確認してTodoアプリ開発完了です。

すべてのカリキュラムを無料登録で学ぶ

プログラミング・マーケティング・AI活用方法を
今すぐ無料登録すると、全てのコンテンツが視聴可能になります。