Rechercher

PythonReactSEOPDF
GitHub Skill

file-storage

ファイルアップロード、S3、ファイルシステム操作を扱う際に使用。

TakumiOkayasu☆ 0 Étoiles du dépôt0 Forks du dépôt

Installation

Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.

Voir la source ↗Guides

Instructions

File & Storage

📋 実行前チェック(必須)

このスキルを使うべきか?
  • ファイルアップロードを実装する?
  • S3連携を行う?
  • ファイル検証処理を実装する?
  • 署名付きURLを生成する?
前提条件
  • 許可するファイルタイプを定義したか?
  • ファイルサイズ上限を決定したか?
  • 保存先を決定したか?(ローカル/S3等)
禁止事項の確認
  • ユーザー入力のファイル名をそのまま使おうとしていないか?
  • 拡張子だけでファイルタイプを判断しようとしていないか?
  • サイズ制限なしでアップロードを許可しようとしていないか?
  • 機密ファイルをパブリックにしようとしていないか?

トリガー

  • ファイルアップロード実装時
  • S3連携時
  • ファイル検証処理時
  • 署名付きURL生成時

🚨 鉄則

ユーザーアップロードは信用しない。検証必須。


アップロード検証

// ⚠️ 必須チェック
const ALLOWED_TYPES = ['image/jpeg', 'image/png', 'image/webp'];
const MAX_SIZE = 5 * 1024 * 1024; // 5MB

function validateUpload(file: File) {
  // MIMEタイプ(⚠️ 拡張子だけで判断しない)
  if (!ALLOWED_TYPES.includes(file.mimetype)) {
    throw new Error('Invalid file type');
  }
  
  // サイズ
  if (file.size > MAX_SIZE) {
    throw new Error('File too large');
  }
  
  // ファイル名サニタイズ
  const safeName = sanitizeFilename(file.originalname);
}

S3署名付きURL

import { getSignedUrl } from '@aws-sdk/s3-request-presigner';

const url = await getSignedUrl(s3Client, new GetObjectCommand({
  Bucket: 'my-bucket',
  Key: 'file.pdf'
}), { expiresIn: 3600 }); // 1時間

🚫 禁止事項まとめ

  • ユーザー入力ファイル名のそのまま使用
  • 拡張子だけでのファイルタイプ判断
  • サイズ制限なしのアップロード
  • 機密ファイルのパブリック公開

Exemples

Consultez les exemples du dépôt source.

Voir la source ↗

Historique source

Date d’indexation
2026-01-20
Mise à jour de l’index
2026-01-26
Branch
main

Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!