Skip to content
Back to skills

Collection

ASecurity

セキュリティ関連設定のレビューとベストプラクティスを提供します。 📚 リソース参照: このスキルには以下のリソースが含まれています。 必要に応じて該当するリソースを参照してください: - `.claude/skills/security-configuration-review/resources/security-headers-guide.md`: Security Headers Guideリソース - `.claude/skills/security-configuration-review/templates/cors-config-template.js`: Cors Configテンプレート - `.claude/skills/security-configuration-review/templates/helmet-config-template.js`: Helmet Configテンプレート - `.claude/skills/security-configuration-review/templates/security-checklist.md`...

  • 24 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 8, 2026
securityjavascriptrustjavabashsqlnodeexpressgitapidatabase

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 21 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add mattnigh/skills_collection --skill collection --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Collection?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Collection
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mattnigh-collection-08177126/badge)](https://www.skillsdirectory.com/skills/mattnigh-collection-08177126)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: .claude/skills/security-configuration-review/SKILL.md
description: |
  セキュリティ関連設定のレビューとベストプラクティスを提供します。

  📚 リソース参照:
  このスキルには以下のリソースが含まれています。
  必要に応じて該当するリソースを参照してください:

  - `.claude/skills/security-configuration-review/resources/security-headers-guide.md`: Security Headers Guideリソース

  - `.claude/skills/security-configuration-review/templates/cors-config-template.js`: Cors Configテンプレート
  - `.claude/skills/security-configuration-review/templates/helmet-config-template.js`: Helmet Configテンプレート
  - `.claude/skills/security-configuration-review/templates/security-checklist.md`: Security Checklistテンプレート

  - `.claude/skills/security-configuration-review/scripts/check-security-headers.mjs`: Check Security Headersスクリプト

version: 1.0.0
---

# Security Configuration Review

## スキル概要

アプリケーションのセキュリティ設定を包括的にレビューする専門知識を提供します。

**専門分野**:

- HTTP セキュリティヘッダー設定
- CORS(Cross-Origin Resource Sharing)設定
- 環境変数とシークレット管理
- セキュリティログとモニタリング
- CSP(Content Security Policy)

---

## 1. HTTP セキュリティヘッダー

### Helmet.js ミドルウェア

**推奨設定**:

```javascript
const helmet = require("helmet");

app.use(
  helmet({
    contentSecurityPolicy: {
      directives: {
        defaultSrc: ["'self'"],
        scriptSrc: ["'self'", "'unsafe-inline'"], // 本番では'unsafe-inline'削除推奨
        styleSrc: ["'self'", "'unsafe-inline'"],
        imgSrc: ["'self'", "data:", "https:"],
        connectSrc: ["'self'"],
        fontSrc: ["'self'"],
        objectSrc: ["'none'"],
        upgradeInsecureRequests: [],
      },
    },
    hsts: {
      maxAge: 31536000, // 1年
      includeSubDomains: true,
      preload: true,
    },
    frameguard: { action: "deny" },
    noSniff: true,
    xssFilter: true,
  }),
);
```

**判断基準**:

- [ ] Helmet.js または同等のミドルウェアが使用されているか?
- [ ] 本番環境ですべてのセキュリティヘッダーが有効か?

---

### 個別ヘッダー詳細

**Strict-Transport-Security(HSTS)**:

```
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
```

- 目的: HTTPS 強制、HTTP→HTTPS ダウングレード攻撃防止
- [ ] max-age は 1 年(31536000 秒)以上か?
- [ ] includeSubDomains が設定されているか?

**X-Frame-Options**:

```
X-Frame-Options: DENY
```

- 目的: Clickjacking 攻撃防止
- [ ] `DENY`または`SAMEORIGIN`が設定されているか?

**X-Content-Type-Options**:

```
X-Content-Type-Options: nosniff
```

- 目的: MIME タイプスニッフィング防止
- [ ] `nosniff`が設定されているか?

**Referrer-Policy**:

```
Referrer-Policy: no-referrer
```

- 目的: Referer ヘッダー情報漏洩防止
- [ ] `no-referrer`または`strict-origin-when-cross-origin`が設定されているか?

**Permissions-Policy**:

```
Permissions-Policy: geolocation=(), microphone=(), camera=()
```

- 目的: ブラウザ機能アクセス制限
- [ ] 不要な機能が無効化されているか?

---

## 2. Content Security Policy(CSP)

### CSP Directive

**基本設定**:

```
Content-Security-Policy:
  default-src 'self';
  script-src 'self' 'nonce-{random}';
  style-src 'self' 'nonce-{random}';
  img-src 'self' data: https:;
  font-src 'self';
  connect-src 'self';
  frame-ancestors 'none';
  base-uri 'self';
  form-action 'self';
```

**XSS 対策レベル**:

```
レベル1(緩い):
  script-src 'self' 'unsafe-inline' 'unsafe-eval';

レベル2(標準):
  script-src 'self' 'nonce-{random}';

レベル3(厳格):
  script-src 'nonce-{random}';
  require-trusted-types-for 'script';
```

**判断基準**:

- [ ] CSP が設定されているか?
- [ ] `'unsafe-inline'`は本番環境で避けているか?
- [ ] nonce または hash を使用しているか?
- [ ] `'unsafe-eval'`は使用されていないか?

---

### CSP Reporting

**Report-Uri 設定**:

```
Content-Security-Policy:
  default-src 'self';
  report-uri /api/csp-violations;
```

**レポート受信**:

```javascript
app.post(
  "/api/csp-violations",
  express.json({ type: "application/csp-report" }),
  (req, res) => {
    const report = req.body;
    logger.warn("CSP violation", {
      documentUri: report["document-uri"],
      violatedDirective: report["violated-directive"],
      blockedUri: report["blocked-uri"],
    });
    res.status(204).end();
  },
);
```

**判断基準**:

- [ ] CSP 違反レポートが収集されているか?
- [ ] 違反パターンを分析して設定を改善しているか?

---

## 3. CORS 設定

### 設定評価

**安全な設定**:

```javascript
const cors = require("cors");

app.use(
  cors({
    origin: process.env.ALLOWED_ORIGINS.split(","), // ホワイトリスト
    methods: ["GET", "POST", "PUT", "DELETE"],
    allowedHeaders: ["Content-Type", "Authorization"],
    credentials: true,
    maxAge: 86400, // プリフライトキャッシュ: 24時間
  }),
);
```

**危険な設定**:

```javascript
// ❌ すべてのオリジン許可
app.use(cors({ origin: "*", credentials: true }));

// ❌ 動的オリジン(検証なし)
app.use(cors({ origin: req.headers.origin }));
```

**判断基準**:

- [ ] 許可オリジンはホワイトリストで制限されているか?
- [ ] `origin: '*'`と credentials: true の組み合わせは避けているか?
- [ ] 動的オリジン許可時に検証があるか?
- [ ] 不要な HTTP メソッドは許可していないか?

---

## 4. 環境変数とシークレット管理

### .env ファイル管理

**チェック項目**:

- [ ] `.env`ファイルが`.gitignore`に含まれているか?
- [ ] `.env.example`でテンプレートを提供しているか?
- [ ] 本番と開発で異なる`.env`ファイルを使用しているか?

**.gitignore 必須エントリ**:

```gitignore
# 環境変数
.env
.env.local
.env.*.local

# 秘密鍵
*.key
*.pem
*.p12
*.pfx

# 認証情報
credentials.json
auth.json
```

---

### シークレット命名規約

**推奨パターン**:

```bash
# ✅ 明確な命名
TURSO_DATABASE_URL=libsql://...
JWT_SECRET=...
API_KEY_OPENAI=...
ENCRYPTION_KEY=...

# ❌ 曖昧な命名
SECRET=...
KEY=...
PASSWORD=...
```

**判断基準**:

- [ ] シークレット名は用途が明確か?
- [ ] 環境別に異なる接頭辞があるか(DEV*、PROD*等)?

---

### シークレット注入

**Railway/Vercel 設定**:

```javascript
// ビルド時チェック
if (!process.env.TURSO_DATABASE_URL) {
  throw new Error("TURSO_DATABASE_URL is not set");
}

// 必須環境変数リスト
const requiredEnvVars = [
  "TURSO_DATABASE_URL",
  "TURSO_AUTH_TOKEN",
  "JWT_SECRET",
  "SESSION_SECRET",
  "OPENAI_API_KEY",
];

requiredEnvVars.forEach((varName) => {
  if (!process.env[varName]) {
    console.error(`Missing required environment variable: ${varName}`);
    process.exit(1);
  }
});
```

**判断基準**:

- [ ] 起動時に必須環境変数をチェックしているか?
- [ ] デフォルト値が安全でないシークレットを使用していないか?

---

## 5. セキュリティロギング

### ログ記録対象

**必須イベント**:

- 認証成功/失敗(ユーザー、時刻、IP)
- 認可失敗(アクセス拒否)
- 管理者操作(ユーザー削除、権限変更等)
- セキュリティ例外(CSRF 検出、不正トークン等)
- システムエラー(例外、クラッシュ)

**ログ禁止データ**:

- パスワード(平文、ハッシュ)
- セッショントークン、JWT
- クレジットカード番号
- 社会保障番号
- API キー、シークレット

**実装例**:

```javascript
// ✅ 安全なログ
logger.info("Login successful", {
  userId: user.id,
  ipAddress: req.ip,
  timestamp: new Date().toISOString(),
});

// ❌ 危険なログ
logger.debug("User data", {
  password: user.password, // 絶対に禁止
  token: sessionToken,
});
```

**判断基準**:

- [ ] センシティブデータがログに出力されていないか?
- [ ] セキュリティイベントが記録されているか?
- [ ] ログは構造化されているか(JSON 形式推奨)?

---

## 6. Rate Limiting 設定

### 実装確認

**認証エンドポイント**:

```javascript
const rateLimit = require("express-rate-limit");

const loginLimiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15分
  max: 5, // 5回試行
  message: "Too many login attempts, please try again later",
  standardHeaders: true,
  legacyHeaders: false,
});

app.post("/api/login", loginLimiter, loginHandler);
```

**グローバル Rate Limiting**:

```javascript
const globalLimiter = rateLimit({
  windowMs: 60 * 60 * 1000, // 1時間
  max: 100, // 100リクエスト
  skip: (req) => req.ip === "trusted-ip", // ホワイトリスト
});

app.use("/api/", globalLimiter);
```

**判断基準**:

- [ ] 認証エンドポイントに Rate Limiting があるか?
- [ ] API グローバル Rate Limiting があるか?
- [ ] レート超過時に 429 ステータスコードが返されるか?
- [ ] Retry-After ヘッダーが設定されているか?

---

## 7. エラーハンドリングとセキュリティ

### 情報漏洩防止

**本番環境エラーレスポンス**:

```javascript
// ✅ 安全(本番環境)
app.use((err, req, res, next) => {
  logger.error("Server error", {
    message: err.message,
    stack: err.stack,
    userId: req.session?.userId,
  });

  res.status(500).json({
    error: "Internal server error", // 詳細を隠す
  });
});

// ❌ 危険(本番環境で使用禁止)
app.use((err, req, res, next) => {
  res.status(500).json({
    error: err.message,
    stack: err.stack, // スタックトレース露出
    query: req.query, // 内部情報漏洩
  });
});
```

**判断基準**:

- [ ] 本番環境でスタックトレースを返していないか?
- [ ] エラーメッセージは一般的か(詳細を隠す)?
- [ ] 内部パス、DB 情報が漏洩していないか?

---

## 8. HTTPS/TLS 設定

### HTTPS 強制

**実装**:

```javascript
// すべてのHTTPリクエストをHTTPSにリダイレクト
app.use((req, res, next) => {
  if (
    req.header("x-forwarded-proto") !== "https" &&
    process.env.NODE_ENV === "production"
  ) {
    return res.redirect(`https://${req.header("host")}${req.url}`);
  }
  next();
});
```

### HSTS 設定

**ヘッダー**:

```
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
```

**preload リスト登録**:
https://hstspreload.org/ に登録することで、ブラウザが常に HTTPS を強制

**判断基準**:

- [ ] 本番環境で HTTPS が強制されているか?
- [ ] HSTS ヘッダーが設定されているか?
- [ ] max-age は 1 年以上か?

---

## 9. 設定ファイル監査チェックリスト

### セキュリティヘッダー

- [ ] Content-Security-Policy 設定
- [ ] Strict-Transport-Security(HSTS)設定
- [ ] X-Frame-Options 設定
- [ ] X-Content-Type-Options 設定
- [ ] Referrer-Policy 設定
- [ ] Permissions-Policy 設定

### CORS

- [ ] 許可オリジンがホワイトリストで制限
- [ ] `origin: '*'`と credentials: true の組み合わせなし
- [ ] 不要な HTTP メソッドを許可していない
- [ ] プリフライトリクエストのキャッシュ設定

### 環境変数

- [ ] .env が.gitignore に含まれる
- [ ] .env.example でテンプレート提供
- [ ] ハードコードされたシークレットなし
- [ ] 起動時の必須環境変数チェック

### ロギング

- [ ] センシティブデータがログに出力されない
- [ ] セキュリティイベントが記録される
- [ ] ログは構造化されている(JSON)
- [ ] ログレベルが適切に設定

### Rate Limiting

- [ ] 認証エンドポイントに Rate Limiting
- [ ] グローバル Rate Limiting 設定
- [ ] 429 ステータスコード返却
- [ ] Retry-After ヘッダー設定

---

## リソース・スクリプト・テンプレート

### リソース

- `resources/security-headers-guide.md`: セキュリティヘッダー詳細
- `resources/cors-best-practices.md`: CORS 設定ベストプラクティス
- `resources/environment-variables-management.md`: 環境変数管理ガイド

### スクリプト

- `scripts/check-security-headers.mjs`: セキュリティヘッダーチェック
- `scripts/audit-cors-config.mjs`: CORS 設定監査
- `scripts/scan-env-files.mjs`: 環境変数ファイルスキャン

### テンプレート

- `templates/helmet-config-template.js`: Helmet.js 設定テンプレート
- `templates/cors-config-template.js`: CORS 設定テンプレート
- `templates/security-checklist.md`: セキュリティ設定チェックリスト

---

## 関連スキル

- `.claude/skills/authentication-authorization-security/SKILL.md`: セッション Cookie 設定
- `.claude/skills/rate-limiting-strategies/SKILL.md`: Rate Limiting 詳細
- `.claude/skills/owasp-top-10/SKILL.md`: A05(セキュリティ設定ミス)

---

## 変更履歴

### v1.0.0 (2025-11-26)

- 初版リリース
- .claude/agents/sec-auditor.md エージェントからセキュリティ設定レビュー知識を抽出
- セキュリティヘッダー、CORS、環境変数、ロギングの評価基準を定義

Files in this skill

  • 0Chan-smc__claude-code-workflow-lab__claude__skills__frontend-dev-guidelines__SKILL.md15.1 KB
  • 17hz__nextjs-template__claude__skills__example-skill__SKILL.md316 B
  • 1ambda__dataops-platform__claude__skills__context-synthesis__SKILL.md3.5 KB
  • 1natsu172__dotfiles__claude__skills__git-analysis__SKILL.md5.4 KB
  • 1natsu172__dotfiles__claude__skills__github-pr-best-practices__SKILL.md7.7 KB
  • 23Maestro__prospect-pipeline__claude__skills__npid-fastapi-skill.md26.1 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-code-javascript__SKILL.md15.7 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-code-python__SKILL.md17.5 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-expression-syntax__SKILL.md9.4 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-mcp-tools-expert__SKILL.md12.5 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-node-configuration__SKILL.md16.6 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-workflow-patterns__SKILL.md11.2 KB
  • 3x-Projetos__claude-memory-framework__claude__skills__scientist__SKILL.md14.8 KB
  • 5MinFutures__futures-arena__claude__skills__migration-tracker__SKILL.md16.2 KB
  • 5MinFutures__futures-arena__claude__skills__planning-guidelines__SKILL.md11.8 KB
  • 92Bilal26__TaskPilotAI__claude__skills__assessment-builder__SKILL.md17.5 KB
  • 92Bilal26__TaskPilotAI__claude__skills__book-scaffolding__SKILL.md19.1 KB
  • 92Bilal26__TaskPilotAI__claude__skills__code-validation-sandbox__SKILL.md6.2 KB
  • 92Bilal26__TaskPilotAI__claude__skills__exercise-designer__SKILL.md18.1 KB
  • 92Bilal26__TaskPilotAI__claude__skills__learning-objectives__SKILL.md24.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in security →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.