知識をつける11分で読めます

AI開発で気をつけるセキュリティ|CLAUDE.mdにルールを常設する

毎回セキュリティを指示するのは現実的ではありません。CLAUDE.mdにルールを書いておけば、指示しなくても守られます。そのまま使えるルール文と、自分で確認する4項目を掲載。

AIに任せて作ると、セキュリティの穴は指示しない限り埋まりません。ただ、毎回思い出して指示するのは現実的ではありません。この記事では、指示を毎回書かなくて済むようにする方法を中心に、Claude Codeでの具体的な対処をまとめます。

まず結論

いちばん効くのは、CLAUDE.md にセキュリティのルールを書いておくことです。

CLAUDE.md は、Claude Code が毎回自動で読む設定ファイルです。ここにルールを書いておけば、毎回指示しなくても守られます。

人間が毎回思い出すのは無理です。仕組みで解決するほうが確実です。

AI開発で起きる問題は、大きく4種類

まず全体像です。細かい攻撃手法は無数にありますが、非エンジニアが公開したサービスで実際に起きるのは、ほぼこの4つです。

  • 他人のデータが見えてしまう(URLの番号を変えるだけで見える)ここが該当したら公開しない
  • 鍵が漏れる(APIキーがブラウザから見える、コードに書かれている)ここが該当したら公開しない
  • 管理画面に誰でも入れる(リンクを隠しただけになっている)ここが該当したら公開しない
  • 変な入力で壊れる、または悪用される(SQLインジェクションなど)ここが該当したら公開しない
上から順に、実際に起きる頻度が高い順です。

1番目が圧倒的に多いです。 SQLインジェクションのような有名な攻撃より、こちらのほうがはるかに頻度が高く、被害も同じくらい大きくなります。

なぜこの4つが起きるのか。理由は共通しています。

65%

AIに任せて作られたアプリのうち、調査で弱点が見つかったものの割合です。AIの性能が低いからではなく、頼まれていないことは考えないためです。

出典:Hostinger(2026年の調査まとめ)

対処1:CLAUDE.md にルールを常設する

ここが本題です。

CLAUDE.md とは

Claude Code が作業を始めるときに、毎回自動で読む設定ファイルです。プロジェクトのフォルダに CLAUDE.md という名前で置いておくだけです。

「このプロジェクトはこういう方針で作ってください」と一度書いておけば、以降ずっと効きます。

そのまま使えるセキュリティのルール

次の内容を CLAUDE.md に貼っておいてください。 これだけで、毎回の指示がかなり減ります。

## セキュリティのルール

このプロジェクトでは、次を必ず守ってください。
指示されていなくても、常に適用してください。

### データの見え方
- ログインした本人のデータしか読み書きできないようにする
- 画面で隠すだけの対応はしない。データベース側(RLS)でも制限する
- URLの番号を書き換えられても、他人のデータが返らないようにする

### 秘密の情報
- APIキーや接続情報は .env に置き、コードに直接書かない
- .env は .gitignore に必ず含める
- NEXT_PUBLIC_ が付いた環境変数はブラウザから見えるため、
  秘密の値には絶対に使わない

### 権限
- 管理者向けの画面や機能は、サーバー側で権限を確認してから表示する
- 画面にリンクを出さないだけの対応にはしない

### 入力
- フォームの値は、画面側だけでなくサーバー側でも検証する
- 文字数の上限を決める
- データベースへの問い合わせで、入力値をSQL文に直接つなげない

### 作業のしかた
- 上記に関わる変更をしたときは、何をしたかを説明してください
- 安全でない書き方をせざるを得ない場合は、必ず理由とともに事前に伝えてください

最後の2行を入れておくのがコツです。 黙って安全でない実装をされるのを防げます。

効果の確かめ方

貼ったあとで、こう聞いてみてください。

CLAUDE.md のセキュリティルールを読んで、
現在のコードが違反している箇所をすべて挙げてください。
直す前に、一覧で教えてください。

すでに作ってしまったものにも、後から適用できます。

対処2:作る前に伝える

新しく作り始めるときは、最初の指示に条件として入れます。

◯◯を作りたいです。

条件:
・個人情報(氏名・電話番号)を扱います
・ログインした本人のデータしか見えないようにしてください
・データベース側(RLS)でも制限してください
・秘密の鍵はコードに書かず、.env に置いてください

「個人情報を扱います」と最初に伝えるだけで、提案される作りが変わります。

対処3:公開前に確認させる

作り終わったら、確認の指示を出します。

公開する前に、安全面の確認をしてください。
次の項目について、今どうなっているかを説明してから、問題があれば直してください。

1. ログインした人が、他人のデータを見られてしまわないか
   URLの番号を書き換えた場合も含めて確認してください
2. 管理者用の画面に、URLを直接入力すれば誰でも入れてしまわないか
3. 鍵にあたる情報が、ブラウザから見える場所に置かれていないか
   NEXT_PUBLIC_ が付いた環境変数に秘密の値が入っていないかも確認してください
4. フォームに想定外の値を送られたとき、サーバー側で止められるか

直す前に、まず現状を教えてください。

対処4:自分の手でも確かめる

AIの報告を鵜呑みにしないでください。 自分が書いたものを自分で確認するので、見落としがあります。

48%

AIが書いたコードを「必ず確認している」開発者の割合です。プロでも半数以上は確認していません。自分で試す工程を省略しないでください。

出典:Keyhole Software(2026年の調査)

確認は5分で終わります。

  1. 1

    アカウントを2つ作り、URLの番号を書き換える

    他人のデータが見えたら、公開してはいけません。

  2. 2

    ログアウトして管理画面のURLを直接開く

    開けてしまったら、権限確認が入っていません。

  3. 3

    ブラウザの検証画面で secret / sk_ を検索する

    見つかったら、その鍵は無効化して再発行してください。ファイルを消すだけでは足りません。

  4. 4

    入力欄に長い文字列とシングルクォートを入れる

    エラー画面が出たら、サーバー側の検証が足りていません。

自分のサービスに対してのみ実施してください。他人のサービスに試すと法律に触れます。

Skills を使うという選択肢

Claude Code には、繰り返す作業を手順として登録しておける仕組みがあります。

「公開前チェック」を毎回同じ手順で実行したい場合、それを登録しておけば、呼び出すだけで済みます。CLAUDE.md が「常に守るルール」なのに対し、**Skills は「必要なときに呼び出す手順」**です。

ただし、まずは CLAUDE.md から始めてください。 効果が大きく、置くだけで済むためです。

この記事の範囲と、その先

ここまでが「何に気をつけ、どう指示するか」です。実際の設定手順は、この記事では扱っていません。

たとえば次のような部分です。

  • RLS を Supabase の画面でどう有効にし、どんなポリシーを書くか
  • .env.gitignore を実際にどう設定するか
  • 認証と認可(ログインと権限)の違いと、それぞれの実装
  • 本番公開前に確認する8項目の、1つずつの確認方法

これらは手を動かして覚える必要がある部分なので、Claude Code Camp のカリキュラムで扱っています。 記事だけで完結させると中途半端になるため、あえて踏み込んでいません。

よくある質問

Q. CLAUDE.md を置くだけで安全になりますか? A. なりません。指示の抜けは大きく減りますが、確認は必要です。 自分の手で試す4項目は必ずやってください。

Q. すでに作ってしまったものにも使えますか? A. 使えます。CLAUDE.md を置いたあと「違反している箇所を挙げて」と頼めば、後からでも適用できます。

Q. どこまでやれば「安全」と言えますか? A. 他人の個人情報とお金を扱うなら、自分だけで判断しないでください。 詳しい人に見てもらうのが確実です。

Q. 個人で使うだけなら気にしなくていいですか? A. インターネットに公開しないなら、神経質になる必要はありません。公開した時点から必要になります。

Q. AIに「安全にして」と一言頼むだけではダメですか? A. 不十分です。何を守るのかを具体的に書くほうが確実です。この記事のルールをそのまま使ってください。

まとめ

  • 実際に起きる問題は4つ。他人のデータ閲覧・鍵の漏洩・管理画面への侵入・入力の悪用
  • いちばん多いのは「他人のデータが見えてしまう」。有名な攻撃より頻度が高い
  • 毎回指示するのは無理。CLAUDE.md にルールを常設するのが確実
  • 作る前に「個人情報を扱う」と伝えるだけで、提案される作りが変わる
  • AIの報告を鵜呑みにせず、自分の手で4項目を確かめる
  • 具体的な設定手順は、手を動かして覚える領域

あわせて読みたい