GXO
セキュリティリスクを減らしたい

axios セキュア使い方 チェックリスト 2026|SSRF・タイムアウト・CSRF・interceptor の落とし穴 12 項目

11分で読める

QUICK CHECK

本文を読みながら、自社で進めるべきか、相談前に何を整理するかを確認できます。

自社の場合を相談する

GXO COLUMN

セキュリティ

axios の連続 CVE は「ライブラリ側のバグ」だが、企業システムでの実害の半分以上は「使い方のバグ」が原因だ。 SSRF を防ぐ baseURL 設計、timeout 未設定の連鎖障害、interceptor でトークンが第三者ドメインに漏れる事故――これらは axios のバージョン更新では防げない。本記事では、コードレビューで即使える 12 項目チェックリストを実コード例付きで提示する。


目次

  1. チェックリスト 12 項目 概要
  2. SSRF 対策(baseURL/allowAbsoluteUrls)
  3. timeout 設定(接続/レスポンス/総時間)
  4. CSRF トークン送信の正しい設計
  5. interceptor のトークン漏洩リスク
  6. proxy 設定の罠
  7. redirect の自動追従を制御する
  8. JSON 解析と Prototype Pollution
  9. エラーハンドリングと情報漏洩
  10. コードレビュー用 12 項目チェックリスト
  11. よくある質問(FAQ)

チェックリスト 12 項目 概要

#項目リスクレベル検知方法
1baseURL に外部由来文字列を結合していないgrep
2allowAbsoluteUrls: false を明示grep
3timeout を必ず設定(5-30 秒)grep
4maxRedirects を制御(既定値の見直し)grep
5maxContentLength/maxBodyLength で DoS 防止grep
6CSRF トークンを meta タグから注入grep
7interceptor で他ドメインに Authorization を漏らさないレビュー必須
8proxy 経由時の TLS 検証無効化禁止grep
9レスポンスを responseType: 'json' 明示grep
10エラーログに request body を含めないレビュー
11retry に exponential backoff+上限レビュー
121.15.0 以降を使用(CVE-2026-40175 対応)必須package.json

FREE CONSULTATION

この記事の内容について、専門家に相談できます

AI・DX・セキュリティに関するご質問やお見積もりなど、お気軽にお問い合わせください。

無料で相談する

SSRF 対策

NG パターン(ユーザー入力を baseURL/url に直結合)

const userUrl = req.body.targetUrl;
const res = await axios.get(userUrl);

外部ユーザーが http://169.254.169.254/latest/meta-data/ を渡すと AWS メタデータエンドポイントに到達。

OK パターン(allowlist + 絶対 URL 拒否)

const ALLOWED = ['https://api.partner1.example', 'https://api.partner2.example'];
const targetBase = ALLOWED.find(b => userUrl.startsWith(b));
if (!targetBase) throw new Error('Forbidden host');

const client = axios.create({
  baseURL: targetBase,
  allowAbsoluteUrls: false,
  timeout: 10_000,
});
const res = await client.get(userUrl.replace(targetBase, ''));

timeout 設定

const client = axios.create({
  timeout: 10_000,
  signal: AbortSignal.timeout(15_000),
});

接続 timeout(OS レベル)とレスポンス timeout(axios レベル)と総時間(AbortSignal)の 3 段で守る。


FREE DOWNLOAD

中小企業の脆弱性対応 月次運用テンプレ

情シス1人体制でも回せる脆弱性棚卸・対応フローのテンプレート(Excel版)。

CSRF トークン送信の正しい設計

<meta name="csrf-token" content="{{ csrf_token() }}">
import { camelCase } from 'lodash';

const token = document.querySelector('meta[name=\"csrf-token\"]')?.content;
const client = axios.create({
  baseURL: '/api',
  headers: { 'X-CSRF-Token': token },
  withCredentials: true,
});

xsrfCookieName / xsrfHeaderName 既定の使用は同一オリジンのみ。CDN 経由 API では meta タグからの注入が確実。


interceptor のトークン漏洩リスク

NG パターン(外部 URL リダイレクト時に Authorization を引き継ぐ)

client.interceptors.request.use(config => {
  config.headers.Authorization = `Bearer ${token}`;
  return config;
});

axios は redirect 時に Authorization を引き継がないが、interceptor で全リクエストに付与する設計だと、redirect 後の外部ドメイン宛にも付与される。

OK パターン(自社ドメイン限定)

client.interceptors.request.use(config => {
  const url = new URL(config.url ?? '', config.baseURL);
  if (url.hostname.endsWith('.example.com')) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

proxy 設定の罠

const client = axios.create({
  proxy: {
    host: 'proxy.internal',
    port: 8080,
  },
});

NG: process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0' で TLS 検証を無効化する。CI のデバッグで仕込んだまま本番に流出する事故が多発。


redirect の自動追従を制御する

const client = axios.create({
  maxRedirects: 5,
});

OAuth コールバックなど redirect が前提の処理では、maxRedirects: 0 + 手動制御が安全。リダイレクト URL の検証ロジックを噛ませる。


JSON 解析と Prototype Pollution

CVE-2026-40175 のような Prototype Pollution は、応答 JSON に __proto__ キーが含まれた時に発生。1.15.0 以上であれば既定で防御されるが、自前で JSON.parse 結果を再帰マージする処理がある場合は別途対策が必要。

const safeMerge = (target, source) => {
  for (const key of Object.keys(source)) {
    if (key === '__proto__' || key === 'constructor' || key === 'prototype') continue;
    target[key] = source[key];
  }
  return target;
};

エラーハンドリングと情報漏洩

NG パターン

catch (e) {
  logger.error(e.config); // request body / headers / token が全部出る
}

OK パターン

catch (e) {
  logger.error({
    url: e.config?.url,
    status: e.response?.status,
    code: e.code,
  });
}

retry に exponential backoff+上限

import axiosRetry from 'axios-retry';

axiosRetry(client, {
  retries: 3,
  retryDelay: (count) => Math.min(2 ** count * 200, 2_000),
  retryCondition: (e) => axiosRetry.isNetworkOrIdempotentRequestError(e),
});

コードレビュー用 12 項目チェックリスト

□ 1. baseURL にユーザー入力を結合していない
□ 2. allowAbsoluteUrls: false を明示
□ 3. timeout を 5-30 秒で設定
□ 4. maxRedirects を 0-5 に制御
□ 5. maxContentLength を 10MB 以下に
□ 6. CSRF トークンを meta から注入
□ 7. interceptor の Authorization 付与をドメイン限定
□ 8. NODE_TLS_REJECT_UNAUTHORIZED を本番で無効化していない
□ 9. responseType: 'json' を明示
□ 10. error ログに request body を含めていない
□ 11. retry に exponential backoff+上限
□ 12. axios 1.15.0 以上を使用

よくある質問(FAQ)

Q. 既存コード 100 callsite で 12 項目全部レビューするのは現実的? A. 12 項目のうち 1-3/6/8/12 は grep で 30 分以内に網羅可能。7/10/11 はコードレビュー必須。1 callsite あたり平均 3 分で 100 callsite で 5 時間が目安。

Q. axios.create() を使い回す設計と都度 new する設計、どちらが安全? A. interceptor/timeout/allowlist を一元管理する観点で、axios.create() を 1 箇所で生成して export する設計が安全。

Q. axios-retry はどのくらい広く採用されている? A. axios-retry の週次ダウンロード数は 200 万超(2026 年 4 月時点)、企業システムでもデファクト。retry 自前実装より低リスク。


参考資料

  • axios 公式ドキュメント Security Best Practices
  • OWASP API Security Top 10 2023
  • IPA「Web アプリケーション開発における脆弱性対策」2024 年版

社内コードレビュー基準への組込みやセキュリティ自動化(grep ルール/Lint 規約)の整備は、GXO のセキュリティ運用支援サービスで支援可能です。

<!-- GXO_QUALITY_REWRITE_20260507_START -->

GXO実務追記: サイバーセキュリティで発注前に確認すべきこと

この記事のテーマは、単なるトレンド紹介ではなく、自社で最初に塞ぐべきリスク、外部診断の範囲、初動体制を決めるための検討材料です。検索で情報収集している段階でも、発注前に次の観点を整理しておくと、見積もりのブレ、手戻り、ベンダー依存を減らせます。

まず決めるべき3つの論点

論点確認する内容未整理のまま進めた場合のリスク
目的売上拡大、工数削減、リスク低減、顧客体験改善のどれを優先するか成果指標が曖昧になり、PoCや開発が終わっても投資判断できない
範囲対象部署、対象業務、対象データ、対象システムをどこまで含めるか見積もりが膨らむ、または重要な連携が後から漏れる
体制自社責任者、現場担当、ベンダー、保守運用者をどう置くか要件確認が遅れ、納期遅延や品質低下につながる

費用・期間・体制の目安

フェーズ期間目安主な成果物GXOが見るポイント
事前診断1〜2週間課題整理、現行確認、投資判断メモ目的と範囲が商談前に整理されているか
要件定義 / 設計3〜6週間要件一覧、RFP、概算見積、ロードマップ見積比較できる粒度になっているか
PoC / MVP1〜3ヶ月検証環境、効果測定、リスク評価本番化判断に必要な数値が取れるか
本番導入3〜6ヶ月本番環境、運用設計、教育、改善計画導入後の運用責任と改善サイクルがあるか

発注前チェックリスト

  • 重要システムと個人情報の所在を棚卸ししたか
  • VPN、管理画面、クラウド管理者の多要素認証を必須化したか
  • バックアップの世代数、復旧時間、復旧訓練の実施日を確認したか
  • 脆弱性診断の対象をWeb、API、クラウド、社内ネットワークに分けたか
  • EDR/MDR/SOCの必要性を、監視できる人員と照らして判断したか
  • インシデント時の連絡先、意思決定者、広報/法務/顧客対応を決めたか

参考にすべき一次情報・公的情報

上記の一次情報は、社内稟議やベンダー比較の根拠として使えます。一方で、公開情報だけでは自社の現行システム、業務フロー、データ状態、予算制約までは判断できません。記事で一般論を把握した後は、自社条件に落とした診断が必要です。

GXOに相談するタイミング

次のいずれかに当てはまる場合は、記事を読み進めるだけでなく、早めに相談した方が安全です。

  • 見積もり依頼前に、要件やRFPの粒度を整えたい
  • 既存ベンダーの提案が妥当か第三者視点で確認したい
  • 補助金、AI、セキュリティ、レガシー刷新が絡み、判断軸が複雑になっている
  • 社内稟議で費用対効果、リスク、ロードマップを説明する必要がある
  • PoCや診断で終わらせず、本番導入と運用改善まで進めたい

axios セキュア使い方 チェックリスト 2026|SSRF・タイムアウト・CSRF・interceptor の落とし穴 12 項目を自社条件で診断したい方へ

GXOが、現状整理、RFP/要件定義、費用対効果、ベンダー比較、導入ロードマップまで実務目線で確認します。記事の一般論を、自社の投資判断に使える形へ落とし込みます。

セキュリティ初期診断を相談する

※ 初回相談では営業資料の説明よりも、現状・課題・判断材料の整理を優先します。

<!-- GXO_QUALITY_REWRITE_20260507_END -->

ISSUE HUB

セキュリティリスクを減らしたいの全体像を見る

関連する中カテゴリ・小カテゴリ・記事を横断し、課題の整理、優先順位、解決策をまとめて確認できます。

課題別ハブを見る

CATEGORY CLUSTER

同じ課題で読む

この記事の親カテゴリと近い小カテゴリをたどると、課題の全体像から具体的な解決策まで順に確認できます。

関連 HUB

この記事は以下の業種・悩み hub にも掲載されています。同じテーマの実務ナレッジと支援サービスをまとめてご覧いただけます。

お気軽にご相談ください

AI・DXに関するご質問やお見積もりなど

無料相談する

CONTACT

まずは 無料相談 から始めませんか。

サービスについてのご相談・ご質問などお気軽にお問い合わせください。
※ 営業電話はしません | オンライン対応可 | 相談だけでもOK