--- title: "getReport" slug: "security-websecuritychecker-getreport" updated: 2026-09-17T09:58:23Z published: 2026-09-17T09:58:23Z canonical: "api.ncloud-docs.com/security-websecuritychecker-getreport" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # getReport Classic/VPC環境で利用できます。 診断ジョブが完了した診断のレポートを出力します。 ## リクエスト リクエスト形式を説明します。リクエスト形式は次の通りです。 | メソッド | URI | | --- | --- | | GET | /api/v1/jobs/{instanceId}/report | ### リクエストヘッダ Web Security Checkerで共通して使用されるヘッダの詳細は、[Web Security Checkerのリクエストヘッダ](/docs/ja/security-websecuritychecker#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)をご参照ください。 ### リクエストパスパラメータ リクエストパスパラメータの説明は次の通りです。 | フィールド | タイプ | 必須の有無 | 説明 | | --- | --- | --- | --- | | InstanceId | Integer | Required | 診断の識別番号 - [getJobs](/docs/ja/security-websecuritychecker-getjobs)または[searchJobs](/docs/ja/security-websecuritychecker-searchjobs)を参照 | ### リクエスト例 リクエストのサンプルコードは次の通りです。 ``` curl --location --request GET 'https://wsc.apigw.ntruss.com/api/v1/jobs/{instanceId}/report' \ --header 'x-ncp-apigw-timestamp: {Timestamp}' \ --header 'x-ncp-iam-access-key: {Access Key}' \ --header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \ --header 'Content-Type: application/json' ``` ## レスポンス レスポンス形式を説明します。 ### レスポンスボディ レスポンスボディの説明は次の通りです。 | フィールド | タイプ | 必須の有無 | 説明 | | --- | --- | --- | --- | | `report_date` | String | - | 診断完了時間 | | `Target_Info` | String | - | 診断対象情報 | | `Crawl_Time` | String | - | クローリング時間(YYYY/MM/DD hh:mm:ss~YYYY/MM/DD hh:mm:ss) | | `Scan_Time` | String | - | 診断ジョブ時間(YYYY/MM/DD hh:mm:ss~YYYY/MM/DD hh:mm:ss) | | `Excluded_Url` | String | - | 診断除外対象 URLリスト | | `Login_Info` | String | - | 認証クッキー情報 | | `Vulnerability_Category` | String | - | 診断項目を並べる(VulnTitle_1, VulnTitle_2, ...) | | `User_Agent` | String | - | 診断/クローラブラウザの設定 | | `Memo` | String | - | 診断ジョブ作成時に作成したメモ | | `Scanned_Domain_List` | Array | - | 診断対象のドメインリスト | | `Not_Scanned_Domain_List` | Array | - | 診断除外ドメインリスト | | `Classify_byRisk_Level` | Object | - | 危険度ごとの脆弱性数 | | `Classify_byRisk_Level.Total` | Integer | - | 脆弱性の総数 | | `Classify_byRisk_Level.High` | Integer | - | 影響度「上」の脆弱性数 | | `Classify_byRisk_Level.Medium` | Integer | - | 影響度「中」の脆弱性数 | | `Classify_byRisk_Level.Low` | Integer | - | 影響度「下」の脆弱性数 | | `Classify_byRisk_Domain` | Object | - | ドメイン、影響度ごとの脆弱性数 | | `Classify_byRisk_Domain."http://your-domain"` | Object | - | `http://your-domain`のリスクごとの脆弱性数 | | `Classify_byRisk_Domain."http://your-domain"."VulnTitle_1"` | Object | - | `http://your-domain`の「VulnTitle_1」診断項目のリスクごとの脆弱性数 | | `Classify_byRisk_Domain."http://your-domain"."VulnTitle_1".High` | Integer | - | `http://your-domain`の「VulnTitle_1」診断項目の影響度「上」の脆弱性数 | | `Classify_byRisk_Domain."http://your-domain"."VulnTitle_1".Medium` | Integer | - | `http://your-domain`の「VulnTitle_1」診断項目の影響度「中」の脆弱性数 | | `Classify_byRisk_Domain."http://your-domain"."VulnTitle_1".Low` | Integer | - | `http://your-domain`の「VulnTitle_1」診断項目の影響度「下」の脆弱性数 | | `Classify_byRisk_Vulnerability` | Object | - | 脆弱性ごとの脆弱性数 | | `Classify_byRisk_Vulnerability."VulnTitle_1"` | Integer | - | 「VulnTitle_1」診断項目の脆弱性数 | | `Classify_byRisk_Vulnerability."VulnTitle_2"` | Integer | - | 「VulnTitle_2」診断項目の脆弱性数 | | `Details` | Object | - | 診断項目ごとの詳細情報 | | `Details."VulnTitle_1"` | Object | - | 「VulnTitle_1」診断項目の脆弱性の詳細情報 | | `Details."VulnTitle_1".RiskLevel` | Object | - | 「VulnTitle_1」の診断時に見つかった脆弱性の影響度 - `Low` \| `Medium` \| `High` | | `Details."VulnTitle_1".Vuln_Desc` | Object | - | 「VulnTitle_1」の診断時に見つかった脆弱性の説明 - 脆弱性の種類に応じて説明が異なる場合がある | | `Details."VulnTitle_1".Vuln_Desc2` | Object | - | 「VulnTitle_1」の診断時に見つかった脆弱性の説明 - 脆弱性の種類に応じて説明が異なる場合がある | | `Details."VulnTitle_1"."0"` | Object | - | 「VulnTitle_1」診断項目の最初の脆弱性の詳細情報 | | `Details."VulnTitle_1"."0".Title` | Object | - | 脆弱性名+番号 | | `Details."VulnTitle_1"."0".vuln_key` | String | - | 脆弱性を識別する固有キー - 形式: キーの様式またはドメイン_脆弱性名_番号 - 例) `"http://example.com_LFI_0"` | | `Details."VulnTitle_1"."0".URL` | Object | - | 脆弱性が発生したパス(ウェブ URL)やメソッド | | `Details."VulnTitle_1"."0".Request_Header` | Object | - | 脆弱性診断に使用したリクエストヘッダ(Request Header)情報 | | `Details."VulnTitle_1"."0".Referer` | Object | - | リクエストヘッダ(Request Header)情報からの以前の参照パス(URL、リファラ) | | `Details."VulnTitle_1"."0".Request_Body` | Object | - | FORMデータ、JSONデータなどリクエストボディ領域 | | `Details."VulnTitle_1"."0".newline` | Boolean | - | レスポンスデータフィールドリストを改行するかどうかを表示 - `true` \| `false` - `true`: 改行 - `false`: 改行しない | | `Details."VulnTitle_1"."0".VulnParam` | String | - | 脆弱な URLクエリストリングまたは POSTデータのパラメータ名 | | `Details."VulnTitle_1"."0".VulnSTR` | String | - | 脆弱性診断モジュールが挿入したペイロード | | `Details."VulnTitle_1"."0".Response_Data` | Array | - | レスポンスボディデータリスト | | `Details."VulnTitle_1"."0".Description` | String | - | 脆弱性攻撃方法についての追加の説明 | | `Details."VulnTitle_1"."0".Reference` | String | - | 対応策外部案内文書のリンク | | `Recommendation` | Object | - | 脆弱性対策の詳細 | | `Recommendation."VulnTitle_1"` | String | - | 「VulnTitle_1」診断項目の脆弱性対策の詳細 | | `Recommendation."VulnTitle_2"` | String | - | 「VulnTitle_2」診断項目の脆弱性対策の詳細 | ### レスポンスステータスコード Web Security Checker APIで共通して使用されるレスポンスステータスコードの詳細は、[Web Security Checkerのレスポンスステータスコード](/docs/ja/security-websecuritychecker#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)をご参照ください。 ### レスポンス例 レスポンスのサンプルコードは次の通りです。 - 診断レポート出力完了 ``` { "returnCode": "0", "returnDesc": "Request Success", "returnMessage": "Success", "resource": { "report_date": "2024-07-08 13:15:10", "Target_Info": "http://your-domain", "Crawl_Time": "2024/07/08 13:12:03~2024/07/08 13:12:08", "Scan_Time": "2024/07/08 13:12:27~2024/07/08 13:15:10", "Excluded_Url": [], "Login_Info": "", "Vulnerability_Category": "SQL Injection, XSS, .... (中略)", "User_Agent": "Mozilla/5.0 .... (中略)", "Memo": "サンプル", "Scanned_Domain_List": [ "http://your-domain" ], "Not_Scanned_Domain_List": [ "http://www.w3.org", "http://httpd.apache.org", "https://bugs.launchpad.net" ], "Classify_byRisk_Level": { "Total": 1, "High": 0, "Medium": 0, "Low": 1 }, "Classify_byRisk_Domain": { "http://your-domain": { "XSS": { "Low": 1 } } }, "Classify_byRisk_Vulnerability": { "XSS": 1 }, "Details": { "XSS": { "RiskLevel": "Low", "Vuln_Desc": "XSS(Cross-site Scripting)脆弱性は... (中略)", "Vuln_Desc2": "- ユーザーから入力された値が有効な範囲.... (中略)", "0": { "Title": "XSS #1", "vuln_key": "http://your-domain_XSS_0", "URL": "[GET]  http://your-domain/...(中略)", "Request_Header": "", "Referer": "", "Request_Body": "", "newline": "true", "VulnParam": "", "VulnSTR": "", "Response_Data": [ "Allow: POST,OPTIONS,HEAD,GET" ], "Description": "", "Reference": "" } } }, "Recommendation": { "XSS": "ユーザーから入力された値が正確に予測可能な... (中略)" } } } ``` - 診断レポート出力エラー: 無効な`InstanceId`を入力した場合 ``` { "error": { "errorCode": 901, "message": "API Call Fail" } } ``` ## サンプルコード 診断レポートを出力するには、診断検索 APIと診断レポート出力 APIが必要です。診断検索 APIを通じて診断レポートを出力する診断の`instanceNo`値を抽出し、この値を利用して診断レポート出力 APIを呼び出します。 診断の検索と`instanceNo`の確認方法、その APIのサンプルコードの詳細は、[getJobs](/docs/ja/security-websecuritychecker-getjobs)または[searchJobs](/docs/ja/security-websecuritychecker-searchjobs)をご参照ください。 診断検索 API(searchJobs)で検索したサンプルコードは次の通りです。 - 検索タイプ: `url` - キーワード: `target-domain.com` ``` # リクエスト例 $ python jobSearch.py "url target-domain.com" # レスポンス例 { "returnCode": "0", "returnDesc": "Request Success", "returnMessage": "Success", "resources": { "total_cnt": 1, "total_page_cnt": 1, "current_start_page": 1, "current_end_page": 1, "record_data": [ { "instanceNo": "1234567890", "start_date": "2024-07-09 15:37:04", "end_date": "2024-07-09 15:39:54", "status": "診断完了", "progress": null, "start_url": "http://target-domain.com", "crawl_cnt": "1", "scan_cnt": "1", "memo": "Wsc Sample", "result_button": "report", "result_desc": "", "rescan_button": "possible", "slave_data": null } ] } } ``` make_signature関数でシグネチャーを作成してリクエストヘッドを作成し、入力したリクエストパラメータに応じて診断する前にキャンセルしてレスポンスコードが200の場合、結果を出力するサンプルコードは次の通りです。 ``` import sys import os import hashlib import hmac import base64 import requests import time import json from pprint import pprint def make_signature(method, uri, timestamp): access_key = "{accessKey}" # access key id (from portal or sub account) secret_key = "{secretKey}" # secret key (from portal or sub account) secret_key = bytes(secret_key, 'UTF-8') method = method uri = uri message = method + " " + uri + "\n" + timestamp + "\n" + access_key message = bytes(message, 'UTF-8') signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest()) return signingKey method = 'GET' instanceId = "{instanceId}" # instance id (from api) uri = f'/api/v1/jobs/{instanceId}/report' timestamp = str(int(time.time() * 1000)) signature = make_signature(method, uri, timestamp) headers = { 'x-ncp-apigw-signature-v2': signature.decode('utf-8'), 'x-ncp-apigw-timestamp': timestamp, 'x-ncp-iam-access-key': '{accessKey}', # access key id (from portal or sub account) 'Content-Type': 'application/json' } response = requests.request( method, f"https://wsc.apigw.ntruss.com{uri}", headers=headers ) if response.status_code == 200: pprint(json.loads(response.text)) else: pprint(json.loads(response.text)) ``` 参考 サンプルコードは Python3を基に作成しました。Java、Node.jsなど他の言語で作成したサンプルコードは、API Gatewayご利用ガイドの[APIの呼び出し](https://guide.ncloud-docs.com/docs/ja/apigw-myproducts#API%ED%98%B8%EC%B6%9C)をご参照ください。