「数行のコードでChatGPTのようなAIアプリが作れた」。CursorやGitHub Copilotなどの開発支援ツールの普及で、初心者でも高度なサービスを形にできる時代になりました。その一方で、セキュリティの基礎が追いつかないまま公開し、取り返しのつかない事態に陥る例も増えています。
なかでも初心者が陥りやすく、影響が大きいのがAPIキーの取り扱いです。結論から言うと、ChatGPTなどのAPIキーは、ブラウザやスマホアプリといった「クライアント側」に直接書いてはいけません。抜き取られると、あなたのクレジットカードで勝手にAIを使い込まれ、高額な請求につながるおそれがあるからです。この記事では、なぜ危険なのか、正しくはどうするのかを、仕組みからやさしく整理します。
結論:APIキーはサーバー側で管理する
まず鉄則を1つ。APIキーはクライアント側に置かず、サーバー側で管理し、ユーザーから見えない場所に隠します。
クライアント側(ブラウザやアプリの中身)に書いたキーは、実質的に全世界へ公開しているのと同じです。インターネットの仕組み上、ユーザーの手元に届くものはすべて解析できますが、サーバーの中身は管理者以外には見えません。この「見えない場所」に鍵をしまうのが、自分を守る基本になります。
用語をかんたんに
- APIキー:OpenAIなどのAIサービスを使うための通行証であり、料金があなたのアカウントに計上される「財布につながった鍵」。
- クライアント側:ユーザーが操作するブラウザや、スマホにインストールしたアプリそのもの。
- サーバー側:インターネットの裏側で動くコンピュータ。ユーザーからは中身を覗けない。
そもそもAPIの仕組みから知りたい場合は、APIとは?仕組み・メリット・セキュリティの注意点もあわせてご覧ください。
なぜバレるのか:クライアント側の中身は見えている
「コードの中身なんて普通の人は見られない」と思っているなら、それは危険な誤解です。Webサイトやアプリの中身は、知識があれば簡単に、ツールを使えば誰でも覗けます。
- ブラウザの検証ツール:Chromeなどに標準で備わり、実行中のJavaScriptや外部との通信をリアルタイムに確認できます。ここにキーが書いてあれば、短時間で特定されてしまいます。
- アプリの解析:スマホアプリも、解析ツールや通信キャプチャツールを使えば、埋め込まれた文字列を抽出したり、通信の裏側を傍受したりできます。
- 自動で探すボット:悪意のあるプログラムが24時間インターネットを巡回し、露出したキーがないか監視しています。OpenAIのキーは
sk-という文字列で始まるため、機械的に見つけられてしまいます。


盗まれると何が起きるのか
OpenAIなどのAPIは、使った分だけ料金がかかる従量課金制で、支払いはあなたのクレジットカードに紐づいています。従量課金で請求が一気に膨らむ仕組みは、サーバレス開発に潜む従量課金の罠でも解説しています。
キーを手に入れた第三者は、自分では払わずにあなたのキーで大量のAI処理を走らせます。単価の高いモデルをフル稼働させたり、ボットで1分間に数千回といった勢いでリクエストを送ったりすることもあります。あなたが寝ている間にも、裏では料金が積み上がっていきます。朝起きたら数千ドル規模の請求が届いていた、という事例は実際に世界中で起きています。


とくに注意したいのが「残高が減ったら自動でチャージする」設定です。これがあると、使い切るたびに自動で課金され続け、カードの限度額まで一気に使われてしまうおそれがあります。
どうすればいいか:サーバーと環境変数
リスクを抑える設計は、次の3ステップが基本です。
- 中継サーバーを用意する。アプリから直接AIサービスへ送るのをやめ、間に自分のサーバーを1枚はさみます。VercelやAWS Lambda、Herokuなどを使えば、初心者でも比較的手軽にサーバー機能を作れます。
- APIキーを環境変数に隠す。サーバー側でもコードに直接書かず、「環境変数」という設定場所に保存します。環境変数はコードとは別に実行環境側へ保存する値なので、ソースコードを見られても、キー自体は表に出ません。
- サーバー経由(プロキシ構成)にする。データの流れを次のように作り変えます。
- クライアント:自分のサーバーに「AIで文章を作って」と依頼する。
- 自分のサーバー:隠しておいたキーを添えて、AIサービスへ代理でリクエストする。
- AIサービス:自分のサーバーに結果を返す。
- 自分のサーバー:結果だけをユーザーの画面へ返す。
このワンクッションを挟むことで、ユーザーの手元にキーは一切届かなくなります。届くのは「AIが返した答え」だけです。
経由させるもう1つの利点
間に自分のサーバーを置くと、セキュリティ以外の恩恵もあります。「このユーザーは今日どれくらい使ったか」といった利用状況をまとめて管理でき、使いすぎを防ぐ制限や、不正な使われ方の検知もできるようになります。
つまずきポイント:GitHubへの誤爆
サーバー側で環境変数を使っていても、キーを書いた .env ファイルをそのままGitHubの公開リポジトリに上げてしまうと、そこから抜き取られてしまいます。.gitignore に .env を加えて、鍵を含むファイルをアップロードしない設定も、セットで覚えておきましょう。
まとめ
- APIキーのクライアント側実装は、高額請求に直結しうる重大なミス。
- Webサイトもアプリも解析でき、露出したキーは簡単に見つかる。
- サーバーを立て、キーは環境変数に隠して運用するのが基本。
- サーバー経由にすると、利用制限や管理もできて、安全性が二重になる。
ログイン画面がわざと不親切に作られている理由は、ログインエラーでID・パスワードのどちらが違うか教えない理由で解説しています。あわせてセキュリティの基本として押さえておくと安心です。
ITセキュリティは、知っているかどうかで差がつきやすい領域です。最初は「サーバーを立てるなんて難しそう」と感じるかもしれませんが、この土台を押さえるほど、AIに任せる開発でも「どこを自分で判断すべきか」が見えてきます。
独学でつまずきやすいのは、知識そのものよりも「何をどの順番で学ぶか」です。安全なAI開発の進め方も、あなたの目標から逆算した学ぶ順番の一部として、1対1で一緒に整理できます。

