メインコンテンツにスキップ
株式会社ゼットリンカー - Next.js システム開発専門
Next.js

中小企業のNext.jsフルスクラッチで、セキュリティをどう担保するか|2026年版チェックリスト(認証・入力検証・脆弱性対策)

Conclusion

Next.js のセキュリティは銀の弾丸ではなく、「本体を最新に保つ・認可をData Access Layerに集約する・入力をZodで検証する・秘密を漏らさない・出荷前に固める」という当たり前の積み重ねです。中小企業のフルスクラッチでも、この総論チェックリストを抜けなくやれば十分に安全に運用できます。

「Next.js はセキュリティ的に大丈夫?」に総論で答えます。2026年5月の大型セキュリティリリース(middleware認可迂回 CVE-2026-44575、16.2.6で修正)を起点に、本体のパッチ追従、認証・認可をData Access Layerに寄せる設計、Zodによる入力検証とServer Actions、環境変数・シークレット管理、依存パッケージの脆弱性、デプロイ設定までを、中小企業向けフルスクラッチの現実的なラインで整理。各論は詳細記事へリンクします。

9分で読めます
Next.jsNext.jsセキュリティ脆弱性中小企業AI駆動開発

中小企業向けに Next.js のフルスクラッチ受託をやっていると、「Next.js って、セキュリティ的に大丈夫なんですか?」と聞かれることがよくあります。フレームワーク自体が新しいので不安、という方もいれば、社内に詳しい人がいないので何をすればいいか分からない、という方もいます。

結論から言うと、Next.js は「フレームワークを最新に保ち、認証・認可を正しい場所で行い、入力を検証する」という当たり前を積み重ねれば、中小企業の業務システムでも十分に安全に運用できます。逆に言うと、特別な銀の弾丸はありません。本記事では、2026 年 6 月時点の公式情報をもとに、中小企業向けフルスクラッチで「最低限ここまではやる」というセキュリティの総論を、受託の現場感で整理します。各論を深掘りしたい部分は、過去記事への内部リンクをたどってください。

まず最優先: Next.js 本体を最新に保ち、脆弱性パッチに追従する

セキュリティの話というと認証や暗号化を思い浮かべがちですが、中小企業の現場で最初にやるべきは「フレームワーク本体を最新に保つこと」です。これがいちばん事故が起きやすく、いちばん対策が簡単な領域だからです。

直近でも、2026 年 5 月に Vercel が Next.js の大型セキュリティリリースを出し、13 件のアドバイザリがまとめて修正されました。その中でも中小企業の業務システムに直接効くのが、App Router の middleware(プロキシ)による認可を迂回できる脆弱性です。特別に細工した .rsc / segment-prefetch のリクエストが、本来の middleware ルールにマッチせずに保護対象ページへ到達でき、認可チェックを飛ばして保護コンテンツが読めてしまう、というものでした(CVE-2026-44575 / GHSA-267c-6grr-h53f、CVSS 7.5。出典: Vercel: Next.js May 2026 security releaseGitHub Security Advisory GHSA-267c-6grr-h53f)。

しかもこの修正には続きがあります。最初の修正(16.2.5)が Turbopack をバンドラに使っている場合に効かない、という取りこぼしが見つかり、修正は 16.2.6 で入りました(CVE-2026-45109)。Next.js 16 は Turbopack が標準バンドラなので、多くの新規案件が影響範囲に入ります。本記事執筆時点(2026-06-09)の安定版は 16.2.7 系なので、16.2.6 以降に上げておけば、この一連の middleware 迂回はふさがります(出典: Next.js 公式ドキュメント Version 16 アップグレード)。

中小企業向けの受託で私たちがやっているのは、地味ですが次の3つです。

  • npm audit を CI に組み込み、本番に効く脆弱性が出たら気づけるようにする(ただし dev 依存だけの警告に振り回されないよう、production への影響を見極める)
  • Next.js 本体のセキュリティリリースは公式ブログを監視し、出たら速やかに上げる運用にする
  • 自動更新(Dependabot / Renovate)でパッチバージョンの追従を仕組み化する

「フレームワークを上げるだけ」で防げる事故をゼロにすることが、限られた予算でいちばん費用対効果の高いセキュリティ対策です。

認証は middleware だけに頼らず、データに近い場所で認可する

次に、認証(ログインしているか)と認可(その人にこの操作が許されているか)の話です。ここは設計の根っこなので、総論として外せません。

前章の middleware 迂回の脆弱性が象徴的ですが、middleware だけに認証・認可を寄せるのは危険というのが 2026 年時点の共通認識です。これは特定のバグだけの問題ではなく、設計思想の問題でもあります。2025 年に公開された CVE-2025-29927 でも、middleware ベースの認証の限界が広く知られるようになりました。

Next.js 公式のデータセキュリティガイドでは、middleware を入口の関門として使いつつ、実際の認可はデータに近い場所、すなわち Data Access Layer(DAL) に集約することを推奨しています。具体的には、データ取得・更新を行う関数を server-only なモジュールに閉じ込め、その中で「セッション検証 → 認可チェック → クエリ → DTO 返却」を行う形です。公式ガイドも、認証だけでなく「このユーザーがこのリソースを操作してよいか」という認可(IDOR 対策)まで確認すべきと明記しています。

中小企業向けでも、会員制サイトや業務システムを作る以上、認証基盤は避けて通れません。Firebase Authentication を使った会員制サイトの作り方は 【2026年版】Next.js 16 + Firebase Authentication で実現するセキュアな会員制サイト構築 にまとめているので、認証の実装イメージはそちらを参照してください。本記事はあくまで総論なので、「middleware を玄関、DAL を本人確認」という二段構えが基本、という点だけ押さえておけば十分です。

ここで一度お知らせ

15分のカジュアル相談

事例・要件未定でもOK/営業はしません/所要時間15分

カジュアルに相談する

入力検証(Zod)と Server Actions の安全な使い方

3つ目は、外から来るデータを信用しない、という話です。フォーム入力、URL パラメータ、ヘッダー、searchParams ——クライアントから来る値はすべて簡単に改ざんできるので、サーバ側で必ず検証します。

私たちは入力検証に Zod を使っています。Server Actions やルートハンドラの入口で Zod スキーマを通し、想定外の値はそこで弾く。これだけで、型の取り違えや不正な値による事故がかなり減ります。

特に注意したいのが Server Actions です。Next.js 公式ガイドは、Server Actions を「常に到達可能な POST エンドポイント」として扱えと明記しています。エクスポートした Server Action は、アプリの UI を経由しなくても直接 POST で叩けるからです。ページ単位の認証チェックは Server Action には伝播しないので、各アクションの中で改めて認証・認可をやり直す必要があります。

この Server Actions のセキュリティは、本記事だけでは語り尽くせない深さがあります。Data Access Layer の具体的な置き方、Zod による入力検証、DTO 返却、エラーの分離まで踏み込んだ各論は、詳細編として 中小企業のNext.jsフルスクラッチで、Server Actions のセキュリティを現実的に守る|Data Access Layer の置き方 に書いています。本記事で「Server Actions は危ない、DAL に認可を寄せる」というラインだけ掴んだら、実装に入る前にそちらを必読としてください。総論(本記事)と各論(DAL記事)をセットで読むのが、いちばん抜け漏れの少ない進め方です。

環境変数・シークレット管理と、依存パッケージの脆弱性

4つ目は、秘密情報の扱いと、自分たちが入れているライブラリの安全性です。地味ですが、漏れると一発で致命傷になる領域です。

環境変数については、Next.js の挙動を正しく理解しておく必要があります。NEXT_PUBLIC_ を付けた環境変数はクライアントに露出するので、本当に公開してよい値だけに使います。API キーや DB 接続情報のような秘密は、絶対に NEXT_PUBLIC_ を付けません。公式ガイドはさらに踏み込んで、「process.env を読むのは Data Access Layer だけにする」ことを推奨しています。秘密情報へのアクセス箇所を一箇所に絞れば、どこから漏れるかの監査が楽になるからです。

中小企業の現場でありがちな事故は、次のようなものです。

  • .env ファイルを誤って Git にコミットしてしまう
  • サーバ専用のはずのキーを、クライアントコンポーネントから参照してしまう
  • ライブラリを入れっぱなしにして、既知の脆弱性が放置される

最初の2つは、.gitignore の徹底と server-only パッケージの活用で防げます。server-only を import したモジュールは、クライアントから import されるとビルドエラーになるので、サーバ専用ロジックの誤った混入を機械的に防げます。

依存パッケージの脆弱性は、前述の npm audit と自動更新で継続的に潰します。ここで AI 駆動開発の話とつながります。Cursor や Claude Code で実装を速くできるようになった分、ライブラリを気軽に増やしがちですが、増やしたパッケージは全部、自分たちの攻撃面になります。私たちは「AI に書かせる前提のルール」として、不要な依存を増やさない・追加する依存は監査する、という方針を Cursor と Claude Code をどう使い分けているか|中小企業向け Next.js 受託の現場 のような運用ルールに落とし込んでいます。AI で速く作ることと、依存を絞って安全に保つことは両立できます。

デプロイ時の設定と、テストで「壊れていないこと」を担保する

最後に、出荷の手前でやるべきことです。コードが安全でも、デプロイ設定が緩いと台無しになります。

中小企業向けのフルスクラッチで、私たちが最低限確認しているのは次のあたりです。

  • リバースプロキシ越しの構成では、Server Actions の serverActions.allowedOrigins を設定し、想定外のオリジンからの実行を弾く(公式が CSRF 対策として推奨)
  • セキュリティ関連の HTTP ヘッダー(Content Security Policy 等)を必要に応じて設定する
  • 本番ビルドで NEXT_PUBLIC_ に秘密が混入していないか、最終確認する
  • エラー監視を入れ、本番で起きた異常に気づける状態にする(ログには個人情報を載せない)

そして、これらのセキュリティ設定が「入れた後に壊れていないこと」をテストで担保するのが大事です。認可チェックや権限分岐は、まさにテストすべき筆頭です。とはいえ中小企業の予算では全部はテストできないので、「何をテストしないか」を先に決める考え方が要ります。権限・金額・外部連携の境界に密度を寄せるテスト戦略は 中小企業のNext.jsフルスクラッチで、テストをどこまで書くか|AI駆動開発時代の現実的なテスト戦略 にまとめているので、セキュリティ設定の回帰を防ぎたい方は合わせて読んでください。

業務システム全体をどう作り直すかという文脈は 【2026年版】中小企業の社内業務を Next.js で作り直す実務ガイド でも触れています。セキュリティは単独の工程ではなく、設計・実装・テスト・運用のすべてに薄く効かせるもの、というのが私たちの考え方です。

まとめ: 中小企業の身の丈で守るセキュリティ・チェックリスト

総論として、中小企業向け Next.js フルスクラッチで「最低限ここまではやる」を一覧にすると、こうなります。

  • 本体を最新に: Next.js は 16.2.6 以降に上げ、middleware 迂回(CVE-2026-44575)等のパッチに追従する。npm audit と自動更新を仕組み化する
  • 認可はデータに近い場所で: middleware だけに頼らず、Data Access Layer にセッション検証と認可を集約する
  • 入力を信用しない: Server Actions・ルートハンドラの入口で Zod 検証。各アクション内で認証・認可をやり直す
  • 秘密を漏らさない: NEXT_PUBLIC_ は公開値だけ。process.env は DAL に閉じ、server-only で誤混入を防ぐ
  • 出荷前に固める: allowedOrigins 設定、セキュリティヘッダー、本番ビルドの最終確認、エラー監視
  • 壊れていないことを担保: 権限・金額・外部連携の境界をテストで守る

特別なことは1つもありません。当たり前を、抜けなく積み重ねるだけです。

中小企業向けNext.jsフルスクラッチのセキュリティ対策6ステップを示す線形プロセス図。本体を最新に保つ、認可をData Access Layerへ集約、入力をZodで検証、秘密情報の漏洩防止、出荷前の設定確認、テストでの回帰防止までを矢印でつなぎ、直近のmiddleware迂回脆弱性の事例も併記している。

AI 駆動開発で実装は速くなりましたが、「どこに認可を置くか」「何を秘密として扱うか」という判断は、引き続き人間が責任を持つべき領域です。

「自社の Next.js システムのセキュリティが今のままで大丈夫か不安」「フルスクラッチで業務システムを作りたいが、セキュリティ設計から相談したい」という中小企業の方は、株式会社ゼットリンカーの無料相談フォーム からご相談ください。ご予算と要件をうかがったうえで、身の丈に合ったセキュリティ設計と見積りをご提案します。

本記事は Next.js 16.x 時点の情報です

最終更新:2026年6月9日

Share this article

15分のカジュアル相談

事例・要件未定でもOK/営業はしません/所要時間15分

カジュアルに相談する

次に読む記事

ALL ARTICLES →
01 / 03Next.js

中小企業のNext.jsフルスクラッチで、Server Actions のセキュリティを現実的に守る|Data Access Layer の置き方

Next.js 16 系の App Router で Server Actions を使う以上、middleware だけの認証では足りません。Data Access Layer (DAL) に認可ロジックを集約し、Zod 検証と DTO 返却を最低ラインに置く。中小企業向けフルスクラッチで「やりすぎず、抜けも作らない」セキュリティ設計を、受託の現場感で整理します。

·9
02 / 03Next.js

Next.js 16.2 の AGENTS.md とブラウザログ転送で、AI駆動開発の受託はどう速くなるか|中小企業向けフルスクラッチの現場

「AIで開発が速くなった」の中身を、Next.js 16.2(2026年3月公開)のフレームワーク側の変化から整理します。create-next-app に標準同梱された AGENTS.md(AIに最新の同梱ドキュメントを読ませ、古い知識での実装を防ぐ)、デフォルト有効になったブラウザログ転送、開発サーバーのロックファイル、実験的な Agent DevTools(next-browser)を、中小企業向けフルスクラッチ受託の現場目線で解説。すべて公式情報に基づき、派手な新機能ではなく「AIの手戻りを減らす足回り」がコストに効くという視点でまとめます。

·9
03 / 03Next.js

受発注管理をSaaSからNext.jsフルスクラッチに切り替える判断基準

受発注SaaSの機能過剰やデータ出力の制約に悩む経営者向けに、Next.jsフルスクラッチへ切り替えるべきサインと残すべきサインを整理。Firestoreでの状態遷移設計と並行運用の進め方を解説します。

·9

プライバシーポリシー

株式会社ゼットリンカー(以下、「当社」といいます。)は、お客様の個人情報の重要性を認識し、 その保護の徹底を図るため、以下のプライバシーポリシー(以下、「本ポリシー」といいます。)を定めます。

1. 個人情報の定義

本ポリシーにおいて「個人情報」とは、生存する個人に関する情報であって、 当該情報に含まれる氏名、生年月日その他の記述等により特定の個人を識別することができるもの、 及び他の情報と容易に照合することができ、それにより特定の個人を識別することができることとなるものを指します。

2. 個人情報の収集

当社は、お客様が当社のサービスをご利用になる際、お客様の個人情報を収集することがあります。収集する個人情報は以下の通りです:

  • 氏名
  • メールアドレス
  • 電話番号
  • 会社名・組織名
  • 住所
  • その他当社が定める入力フォームにお客様が入力する情報

3. 個人情報の利用目的

当社は、お客様からご提供いただいた個人情報を、以下の目的で利用します:

  • お客様への連絡やサービスの提供
  • お客様からのお問い合わせへの対応
  • 当社サービスの改善や新サービスの開発
  • メールマガジンの配信(お客様の同意がある場合)
  • 契約や法令等に基づく権利の行使や義務の履行
  • その他、上記利用目的に付随する目的

4. 個人情報の第三者提供

当社は、以下の場合を除き、お客様の同意なく個人情報を第三者に提供することはありません:

  • 法令に基づく場合
  • 人の生命、身体または財産の保護のために必要がある場合であって、本人の同意を得ることが困難である場合
  • 公衆衛生の向上または児童の健全な育成の推進のために特に必要がある場合
  • 国の機関もしくは地方公共団体またはその委託を受けた者が法令の定める事務を遂行することに対して協力する必要がある場合

5. 個人情報の管理

当社は、お客様の個人情報を正確かつ最新の状態に保ち、個人情報への不正アクセス、 個人情報の紛失、破損、改ざん及び漏洩などを防止するため、 セキュリティシステムの維持・管理体制の整備等の必要な措置を講じ、安全対策を実施し個人情報の厳重な管理を行います。

6. 個人情報の開示・訂正・削除

お客様は、当社に対してご自身の個人情報の開示を求めることができます。 また、開示の結果、個人情報の内容が事実でないことが判明した場合には、 速やかに訂正または削除に応じます。

7. 導入事例の公開について

当社は、お客様から依頼いただいたプロジェクトを導入事例として記事にさせていただく場合があります。導入事例として公開する場合は、以下の点に配慮いたします:

  • 機密情報や個人情報は公開いたしません
  • 社名を公開する場合は、公開内容について事前にお客様に確認いただきます
  • 社名を非公開とする場合でも、お客様のご要望に応じて公開内容を確認いただくことが可能です

8. Cookie(クッキー)の使用について

当社のウェブサイトでは、お客様により良いサービスを提供するため、Cookie を使用することがあります。 Cookie により個人を識別できる情報を収集することはありません。 お客様はブラウザの設定により Cookie の受信を拒否することができます。

9. SSL(Secure Socket Layer)について

当社のウェブサイトはSSLに対応しており、ウェブブラウザとウェブサーバーとの通信を暗号化しています。 お客様が入力する個人情報は自動的に暗号化されて送受信されるため、 万が一、第三者が傍受した場合でも内容を解読することは困難です。

10. プライバシーポリシーの変更

当社は、必要に応じて、本ポリシーの内容を変更することがあります。 変更後のプライバシーポリシーについては、当社ウェブサイトに掲載したときから効力を生じるものとします。

11. お問い合わせ

本ポリシーに関するお問い合わせは、以下の窓口までお願いいたします。

株式会社ゼットリンカー

〒160-0023

東京都新宿区西新宿3丁目3番13号西新宿水間ビル2F

代表取締役: 金原隆利

お問い合わせ先: info@zetlinker.com

制定日:2024年1月1日

最終改訂日:2026/7/20

利用規約

この利用規約(以下、「本規約」といいます。)は、株式会社ゼットリンカー(以下、「当社」といいます。)が 提供するウェブサイトおよびサービス(以下、「本サービス」といいます。)の利用条件を定めるものです。 お客様は、本規約に同意した上で、本サービスをご利用ください。

第1条(適用)

1. 本規約は、お客様と当社との間の本サービスの利用に関わる一切の関係に適用されるものとします。

2. 当社は本サービスに関し、本規約のほか、ご利用にあたってのルール等、各種の定め(以下、「個別規定」といいます。)を することがあります。これら個別規定はその名称のいかんに関わらず、本規約の一部を構成するものとします。

3. 本規約の規定と個別規定の規定が異なる場合は、個別規定において特段の定めなき限り、個別規定の規定が優先されるものとします。

第2条(定義)

本規約において使用する以下の用語は、各々以下に定める意味を有するものとします。

  • 「利用契約」とは、本規約を契約条件として当社とお客様との間で締結される、本サービスの利用契約
  • 「知的財産権」とは、著作権、特許権、実用新案権、意匠権、商標権その他の知的財産権(それらの権利を取得し、またはそれらの権利につき登録等を出願する権利を含みます。)
  • 「投稿データ」とは、お客様が本サービスを利用して投稿その他送信するコンテンツ(文章、画像、動画その他のデータを含みますがこれらに限りません。)

第3条(本サービスの提供)

1. お客様は、本規約に同意の上、当社の定める方法によって利用登録を申請し、当社がこれを承認することによって、本サービスを利用することができるようになります。

2. 当社は、お客様に以下のいずれかの事由があると判断した場合、利用登録の申請を承認しないことがあり、その理由については一切の開示義務を負わないものとします。

  • 利用登録の申請に際して虚偽の事項を届け出た場合
  • 本規約に違反したことがある者からの申請である場合
  • その他、当社が利用登録を相当でないと判断した場合

第4条(ユーザーIDおよびパスワードの管理)

1. お客様は、自己の責任において、本サービスのユーザーIDおよびパスワードを適切に管理するものとします。

2. お客様は、いかなる場合にも、ユーザーIDおよびパスワードを第三者に譲渡または貸与し、もしくは第三者と共用することはできません。

3. 当社は、ユーザーIDとパスワードの組み合わせが登録情報と一致してログインされた場合には、そのユーザーIDを登録しているお客様自身による利用とみなします。

第5条(禁止事項)

お客様は、本サービスの利用にあたり、以下の行為をしてはなりません。

  • 法令または公序良俗に違反する行為
  • 犯罪行為に関連する行為
  • 本サービスの内容等、本サービスに含まれる著作権、商標権ほか知的財産権を侵害する行為
  • 当社、ほかのお客様、またはその他第三者のサーバーまたはネットワークの機能を破壊したり、妨害したりする行為
  • 本サービスによって得られた情報を商業的に利用する行為
  • 当社のサービスの運営を妨害するおそれのある行為
  • 不正アクセスをし、またはこれを試みる行為
  • 他のお客様に関する個人情報等を収集または蓄積する行為
  • 不正な目的を持って本サービスを利用する行為
  • 本サービスの他のお客様またはその他の第三者に不利益、損害、不快感を与える行為
  • 他のお客様に成りすます行為
  • 当社が許諾しない本サービス上での宣伝、広告、勧誘、または営業行為
  • 面識のない異性との出会いを目的とした行為
  • 当社のサービスに関連して、反社会的勢力に対して直接または間接に利益を供与する行為
  • その他、当社が不適切と判断する行為

制定日:2024年1月1日

最終改訂日:2026/7/20