現在の見出し:6.6節:CursorでTodoアプリのセキュリティチェックを実施する
見出し一覧
- 6.6節:CursorでTodoアプリのセキュリティチェックを実施する
- - CursorのAI機能で行うセキュリティ診断と修正方法
【PR】『Python』を学べる企業・個人向けのプログラミングコース
CursorのAI機能で行うセキュリティ診断と修正方法
最後にCursorを使ってアプリのセキュリティチェックを実施します。Cursorのチャット欄に以下のプロンプトを入力・実行します。
このプロジェクトプロジェクトは特定の目的や目標を達成するために行われる一連の開発作業です。をリリース前に簡易的なセキュリティチェックしたいです。以下の観点でコード全体をレビューし、問題のある箇所があれば教えてください:
- ユーザー入力のバリデーションバリデーションは入力値が正しい形式や範囲に合致しているかどうかを検証することです。漏れ・サニタイズ不足(XSS/インジェクション)
- ローカルストレージやセッション管理におけるリスク
- APIAPIは、他のソフトやアプリが自分の機能を利用できるようにするためのインターフェースです。キーや認証情報のハードコーディングコーディングはコンピュータが理解できるようにプログラムを書く作業です。
- 外部ライブラリライブラリは再利用可能なソフトウェアの部品です。の安全性(既知の脆弱性など)
- 不要なconsole.logやデバッグデバッグはコンピュータプログラムの問題を特定して修正する作業です。コード
- パーミッション管理やアクセス制御の甘さ(特に管理機能がある場合)
- .envファイルや機密ファイルの誤公開リスク
- その他、フロントエンドフロントエンドはWebサイトやアプリのユーザーが直接操作する部分です。/バックエンドバックエンドはWebサイトやアプリケーションなどの裏側で動くシステムです。問わず基本的なセキュリティリスク
チェック対象:このプロジェクト全体(srcやapi、utilsなどすべて)
レビュー結果:問題のある箇所のファイル名と簡潔な説明つきで列挙してください。

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

上記のように各フォルダごとにセキュリティの観点でコードを確認していることがわかります。エラーチェックをした結果が下記の通りです。
エラー内容:
- Ctrl+K to generate a command
- ファイル: /c:/Users/d2805/Desktop/cursor-todo/src/App.tsx
- エラーコード: TS2307
- 内容: モジュールモジュールはプログラミングで機能や処理をまとめた再利用可能な単位で、コードの管理や保守を容易にします。 './components/DarkModeToggle' またはそれに対応する型宣言が見つかりません。
対応方法:
- DarkModeToggle.tsxファイルを再作成してみましょう。ファイルが存在していても、何らかの理由で正しく認識されていない可能性があります。
- ファイルを再作成しました。これで問題が解決するはずです。
- アプリケーションを再起動してみてください:Apply to App.tsx → Run
追加の対策:
- TypeScriptTypeScriptはJavaScriptの欠点である型の不一致やエラー検出の難しさを解決するため、Microsoftが開発した静的型付け言語です。のキャッシュキャッシュはコンピュータのデータや命令を一時的に保存する領域で、よくアクセスするデータを高速に取り出せるように設計されています。をクリアする:Apply to App.tsx → Run
- node_modulesを再インストールする:Apply to App.tsx → Run
- VSCodeを再起動する
エラーメッセージ詳細:
- 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キーや認証情報のハードコーディング: 現時点で問題なし
- 外部ライブラリ:
- package.json: react-beautiful-dndが古く、ReactReactは、JavaScriptライブラリの一つです。 19と互換性に問題
- npm install時に依存関係の競合
- 不要なデバッグコード: 現状問題なし
- パーミッション管理: 認証機能が未実装、アクセス制限なし
- .envファイル: .gitignoreには記載済みだが、将来のリスクあり
- その他:
- src/components/TodoList.tsx: resultにany型を使用
- src/reducers/todoReducer.ts: エラーハンドリング不足
改善提案:
- ユーザー入力にDOMDOMはWebページの構造や内容を表すための仕組みです。Purifif文はプログラムで条件分岐を行うための命令文です。yなどを用いたXSS対策
- 入力値のバリデーション・エスケープ処理追加
- ローカルストレージの検証・暗号化暗号は情報を他者から秘密に保護するために用いられる技術です。対応
- ライブラリのバージョンアップおよび依存性の見直し
- any型を使わず、型定義の厳密化
- 例外処理例外処理はプログラム実行中に発生する予期せぬエラーや異常な状況に対処するための仕組みで、プログラムの安定性と信頼性を向上させます。・エラーハンドリングの強化
- 認証機能の追加によるアクセス制御の実装
認証機能を追加する場合、ユーザー情報を保存するためにデータベースデータベースは情報を集めて整理し、保存しておくための仕組みです。との連携も必要になります。なので今回は「認証機能は一旦追加しな形で、問題点に対する改善を実施して下さい。」というプロンプトを実行します。

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

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