← スキル一覧に戻る

sanitizer
by takemo101
⭐ 0🍴 0📅 2026年1月24日
SKILL.md
name: sanitizer description: 外部入力(Issue/PRの本文)からプロンプトインジェクション対策としてサニタイズを行う
Sanitizer
外部入力(GitHub Issue/PRの本文、コメント等)を安全に処理するためのサニタイズ機能。
目的
- プロンプトインジェクション対策: HTMLコメントや不可視文字に隠された悪意ある指示を除去
- トークン漏洩防止: 誤って含まれたGitHubトークンをマスク
- 入力正規化: 不要な属性や特殊文字を除去して安全な入力に変換
使用場面
| 場面 | 適用タイミング |
|---|---|
/implement-issues | Issue本文を読み込む際 |
@claude メンション処理 | コメント本文を処理する際 |
| 外部PR処理 | 信頼できないPRの説明文を処理する際 |
サニタイズ関数
1. HTMLコメント除去
strip_html_comments "<!-- hidden instruction -->"
# 出力: ""
2. 不可視文字除去
strip_invisible_chars "text\u200Bwith\u200Cinvisible"
# 出力: "textwithinvisible"
3. GitHubトークンマスク
redact_github_tokens "token: ghp_1234567890abcdefghijklmnopqrstuvwxyz"
# 出力: "token: [REDACTED_GITHUB_TOKEN]"
4. Markdown画像alt除去
strip_markdown_image_alt ""
# 出力: ""
5. HTML属性除去
strip_hidden_attributes '<div alt="hidden" data-secret="value">text</div>'
# 出力: '<div>text</div>'
CLIスクリプト
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 | 元実装のセキュリティドキュメント |
スコア
総合スコア
50/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です