Agent skill
sanitizer
外部入力(Issue/PRの本文)からプロンプトインジェクション対策としてサニタイズを行う
Stars
163
Forks
31
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/sanitizer
SKILL.md
Sanitizer
外部入力(GitHub Issue/PRの本文、コメント等)を安全に処理するためのサニタイズ機能。
目的
- プロンプトインジェクション対策: HTMLコメントや不可視文字に隠された悪意ある指示を除去
- トークン漏洩防止: 誤って含まれたGitHubトークンをマスク
- 入力正規化: 不要な属性や特殊文字を除去して安全な入力に変換
使用場面
| 場面 | 適用タイミング |
|---|---|
/implement-issues |
Issue本文を読み込む際 |
@claude メンション処理 |
コメント本文を処理する際 |
| 外部PR処理 | 信頼できないPRの説明文を処理する際 |
サニタイズ関数
1. HTMLコメント除去
bash
strip_html_comments "<!-- hidden instruction -->"
# 出力: ""
2. 不可視文字除去
bash
strip_invisible_chars "text\u200Bwith\u200Cinvisible"
# 出力: "textwithinvisible"
3. GitHubトークンマスク
bash
redact_github_tokens "token: ghp_1234567890abcdefghijklmnopqrstuvwxyz"
# 出力: "token: [REDACTED_GITHUB_TOKEN]"
4. Markdown画像alt除去
bash
strip_markdown_image_alt ""
# 出力: ""
5. HTML属性除去
bash
strip_hidden_attributes '<div alt="hidden" data-secret="value">text</div>'
# 出力: '<div>text</div>'
CLIスクリプト
bash
bash .opencode/skill/sanitizer/scripts/sanitize.sh <input-file>
bash .opencode/skill/sanitizer/scripts/sanitize.sh --stdin
echo "content" | bash .opencode/skill/sanitizer/scripts/sanitize.sh --stdin
| 引数 | 説明 |
|---|---|
<input-file> |
サニタイズするファイルパス |
--stdin |
標準入力から読み込み |
出力: サニタイズ済みテキスト(標準出力)
除去対象一覧
| カテゴリ | 対象 | 例 |
|---|---|---|
| HTMLコメント | <!-- ... --> |
<!-- ignore this --> |
| Zero-width文字 | \u200B, \u200C, \u200D, \uFEFF |
不可視文字 |
| 制御文字 | \u0000-\u001F, \u007F-\u009F |
制御コード |
| Bidi制御 | \u202A-\u202E, \u2066-\u2069 |
双方向テキスト制御 |
| Markdown画像alt |  のalt部分 |
 →  |
| HTML属性 | alt, title, aria-label, data-*, placeholder |
<img alt="hidden"> |
| HTMLエンティティ | {, { |
数値エンティティ(非印字文字除去) |
| GitHubトークン | ghp_*, gho_*, ghs_*, ghr_*, github_pat_* |
APIトークン |
セキュリティ考慮事項
- 新しいバイパス技術: 完全な防御は不可能。外部コントリビューターからの入力は常に注意
- 信頼レベル: 内部メンバーのIssueは信頼度高、外部PRは信頼度低として扱う
- 多層防御: サニタイズは一層目。重要な操作前には人間の確認を推奨
関連ドキュメント
| ドキュメント | 内容 |
|---|---|
| claude-code-action security | 元実装のセキュリティドキュメント |
Didn't find tool you were looking for?