web-security について
web-securityは、Webアプリの開発や監査に使うスキルです。OWASP Top 10のチェックに加え、セキュリティ設定、入力保護、認証、依存関係のスキャンを支援します。
主な機能
- 01OWASP Top 10スキャン
- 02CSPの生成と設定
- 03CORS管理
- 04XSSとCSRFの防止
- 05JWTとセッション認証のパターン
- 06npmとyarnの依存関係スキャン
活用シーン
- 01OWASP脆弱性のアプリ監査
- 02CSPポリシーの生成
- 03許可するCORSオリジンの設定
- 04アプリ依存関係の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill web-securityインストール後、Claude Code で/web-securityを入力して読み込まれたか確認します。
詳細
web-security
目的
このスキルを使用すると、OWASP Top 10 のガイドラインに基づいて、CSP、CORS、XSS/CSRF の防止、認証パターン、依存関係のスキャンなど、ウェブセキュリティ対策を実装および監査できます。インジェクション攻撃や不正アクセスといった一般的な脆弱性からウェブアプリケーションを保護することに重点を置いています。
使用するタイミング
ウェブアプリケーションの開発、セキュリティ監査、デプロイ時にこのスキルを使用してください。API の構築、ユーザー認証の処理、クロスオリジンリクエストの設定、既知の脆弱性に関する依存関係のスキャンを行う際に適用します。Express.js や React などのフレームワークを使用するプロジェクトや、サードパーティライブラリを統合する際に適しています。
主な機能
- OWASP Top 10 スキャン:SQL インジェクションや認証の不備などの問題を検出します。組み込みのチェックは
openclaw web-security scan --owaspで実行できます。 - CSP の設定:Content Security Policy ヘッダーを生成します。例:
openclaw web-security csp --policy "default-src 'self'"でポリシーを設定します。 - CORS の管理:Cross-Origin Resource Sharing を適用します。
openclaw web-security cors --allow "https://example.com"で設定します。 - XSS/CSRF の防止:サニタイズ関数とトークン生成機能を提供します。例:コードにアンチ CSRF を組み込みます:
const token = generateCSRFToken(); res.setHeader('X-CSRF-Token', token); - 認証パターン:JWT またはセッションベースの認証を実装します。
openclaw web-security auth --checkで弱点をスキャンできます。 - 依存関係のスキャン:npm/yarn パッケージの脆弱性を分析します。
openclaw web-security depscan --path ./package.jsonで実行します。
使用パターン
タスクを実行するには、OpenClaw の CLI または API 経由でスキルを呼び出します。スキャンではプロジェクトのパスとフラグを指定し、設定ではコードファイルに直接出力します。認証用の環境変数は必ず設定してください。たとえば、コマンドの実行前に $OPENCLAW_API_KEY をエクスポートします。出力をファイルにパイプして統合するパターンの例:openclaw web-security scan --output report.json。コードスニペットの場合は、生成されたセキュリティコードをアプリに組み込みます。例:Express に CSP ミドルウェアを追加します:app.use((req, res, next) => { res.setHeader('Content-Security-Policy', "default-src 'self'"); next(); });
一般的なコマンド/API
- CLI コマンド:
openclaw web-security [subcommand] [flags]を使用します。例:プロジェクトをスキャンします:openclaw web-security scan --project /path/to/app --key $OPENCLAW_API_KEY。API エンドポイント:JSON ボディ{ "projectPath": "/path/to/app", "apiKey": "$OPENCLAW_API_KEY" }を指定して/api/web-security/scanに POST します。 - サブコマンド:
scan --owasp --verbose:OWASP のフルチェックを実行し、脆弱性を JSON で出力します。csp --generate --domains example.com:CSP 文字列を作成します。例:出力:"Content-Security-Policy: default-src 'self' https://example.com"。cors --set --origins "http://localhost:3000":{ "origins": ["http://localhost:3000"], "methods": ["GET", "POST"] }のような設定ファイルで CORS を設定します。auth --pattern jwt:JWT 検証コードを生成します。スニペット:const jwt = require('jsonwebtoken'); const verify = token => jwt.verify(token, process.env.JWT_SECRET);。depscan --format npm:依存関係をスキャンします。例:コマンド:openclaw web-security depscan --path package.json --output vulnerabilities.txt。
- API エンドポイント:すべてのコマンドは
/api/web-security/{subcommand}に対応し、ヘッダーAuthorization: Bearer $OPENCLAW_API_KEYによる認証が必要です。レスポンス形式は、{ "status": "success", "data": { ... } }のようなキーを含む JSON です。
統合に関する注意事項
ビルドスクリプトや CI/CD パイプラインで OpenClaw の呼び出しをラップして統合します。たとえば、GitHub Actions のワークフローに次を追加します:run: openclaw web-security scan --project . --key ${{ env.OPENCLAW_API_KEY }}。永続的な設定には、JSON を記述した .openclawrc ファイルなどの設定ファイルを使用します:{ "web-security": { "defaultFlags": ["--verbose"], "apiKeyEnv": "OPENCLAW_API_KEY" } }。ほかのスキルと組み合わせる場合は、出力を連結します。たとえば、web-security のスキャン結果を「web-dev」デプロイスキルの入力として使用します。API キーは $OPENCLAW_API_KEY などの環境変数に安全に保存し、コードに直接記述しないでください。
エラー処理
終了コードとレスポンス本文を確認してエラーを処理します。よくあるエラー:$OPENCLAW_API_KEY が無効な場合は認証に失敗します(HTTP 401)。キーの形式を確認して修正してください。スキャンに失敗した場合(例:「プロジェクトパスが見つかりません」)はコード 404 が返されます。絶対パスを指定して解決してください。XSS 防止のため、スニペットが失敗した場合は、次のように例外を捕捉します:try { sanitizeInput(userInput); } catch (e) { console.error(e.message); // e.g., "Invalid input detected" }。エラーの詳細を確認するには、JSON レスポンスを解析します。例:{ "error": "Vulnerability detected", "code": 400 }。フラグを修正して再試行してください。デバッグできるよう、エラーには常にタイムスタンプを付けて記録してください。
具体的な使用例
- OWASP の脆弱性をスキャンする:ウェブアプリのインジェクションリスクを監査するには、次を実行します:
openclaw web-security scan --owasp --project /path/to/app。JSON レポートが出力されます。その後、次のようなコードを追加して問題を修正します:const safeQuery = db.escape(userInput); db.query(safeQuery);。想定される出力:脆弱性の一覧。例:{ "injection": ["SQL in login endpoint"] }。 - XSS 防止のために CSP を設定する:Express アプリで CSP を設定するには、次を使用します:
openclaw web-security csp --generate --policy "script-src 'self'"。出力をサーバーコードに組み込みます:app.use(helmet.contentSecurityPolicy({ directives: { scriptSrc: ["'self'"] } }));。これによりインラインスクリプトが防止され、XSS のリスクが低減します。
グラフの関係
- 関連クラスター:「web-dev」(ウェブアプリのビルドで依存関係を共有するなど)。
- 接続されているスキル:「auth-management」(高度な認証パターン向け)、「vulnerability-scanning」(より広範なセキュリティチェック向け)。
- 逆方向の関係:エンドポイントのテストでは「api-tools」に依存し、安全なリリースに向けて「deployment-pipeline」に入力を提供します。