owasp-security は何をしますか?
OWASP Top 10 に従ったセキュアなコーディングを実践します。セキュリティ脆弱性の防止、認証実装、APIの保護、セキュリティレビュー実施時に使用します。OWASP、セキュリティ、XSS、SQLインジェクション、CSRF、認証セキュリティ、セキュアコーディング、脆弱性などの用語がトリガーとなります。
概要
このスキルは、OWASP (Open Web Application Security Project) が定義するトップ10のセキュリティリスクに対処するための実践的なガイドを提供します。開発者はこのスキルを使用して、アプリケーションのセキュリティを強化し、一般的な攻撃ベクトルから保護できます。
機能
- 脆弱性の特定: コードベース内の潜在的なセキュリティ脆弱性を特定します。
- セキュアコーディングの提案: OWASP Top 10 に基づいた修正を提案します。
- 認証と認可: 安全な認証メカニズムとアクセス制御の実装を支援します。
- API セキュリティ: REST API や GraphQL API の保護に関するアドバイスを提供します。
- セキュリティレビュー: コードレビューとセキュリティ監査のチェックリストを提供します。
トリガーキーワード
OWASPセキュリティXSSSQLインジェクションCSRF認証セキュリティセキュアコーディング脆弱性
使用方法
例: SQLインジェクションの防止
ユーザー入力がSQLクエリに直接連結されている場合、このスキルはパラメータ化クエリまたはプリペアドステートメントの使用を提案します。
問題のあるコード:
import sqlite3
def get_user(username):
conn = sqlite3.connect('db.sqlite')
cursor = conn.cursor()
# 脆弱性: SQLインジェクション
cursor.execute(f"SELECT * FROM users WHERE username = '{username}'")
return cursor.fetchone()
推奨されるコード:
import sqlite3
def get_user(username):
conn = sqlite3.connect('db.sqlite')
cursor = conn.cursor()
# セキュア: パラメータ化クエリ
cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
return cursor.fetchone()
例: XSSの防止
ユーザー入力がHTMLにレンダリングされる場合、エスケープとサニタイズの推奨事項を提供します。
問題のあるコード:
app.get('/user', (req, res) => {
const name = req.query.name;
// 脆弱性: 反射型XSS
res.send(`<h1>Hello, ${name}</h1>`);
});
推奨されるコード:
app.get('/user', (req, res) => {
const name = req.query.name;
// セキュア: エスケープ
const safeName = escapeHtml(name);
res.send(`<h1>Hello, ${safeName}</h1>`);
});
function escapeHtml(text) {
const map = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' };
return text.replace(/[&<>"']/g, function(m) { return map[m]; });
}
リソース
サポートされているプラットフォーム
- Claude Code
- Cursor
- Codex
ライセンス
MIT