createJob
- 印刷する
- PDF
createJob
- 印刷する
- PDF
記事の要約
この要約は役に立ちましたか?
ご意見ありがとうございます
注意
顧客所有のWebサーバでない対象を診断する場合に発生し得る各種法的責任(業務妨害、情報通信網法の違反等に関する民事・刑事上の責任)はご本人にあることを予めご案内いたします。顧客が本APIを使用した場合、これに同意したものと見なします。
概要
- createJob APIは「Web Security Checker」から提供される機能で、ユーザーが診断を登録するAPIです。
サポート範囲及び注意事項
- createJob APIは、NAVERクラウドプラットフォームコンソールで Web Security Checkerの利用申請 を行った後に使用できます。
- createJob APIの呼び出し時に課金が発生します。Web Security Checker紹介ページで料金ポリシーを必ず確認してください。
- createJob APIはNAVERクラウドプラットフォームによって作成されたサーバに対する診断のみサポートします。
- NAVERクラウドプラットフォームによって作成されていない外部サーバは、NAVERクラウドプラットフォームコンソール(Web Security Checker) からご利用ください。
- createJob APIは予約機能を提供していないため、APIを呼び出すと同時に診断を開始します。
- 予約機能は NAVERクラウドプラットフォームコンソール(Web Security Checker) からご利用ください。
- 必要な場合、APIを実装する過程で予約を希望する時間にcreateJob APIを呼び出してください。
リクエスト
Method | Request URI |
---|---|
PUT | https://wsc.apigw.ntruss.com/api/v1/job |
Path Variables
パラメータ | 必須有無 | タイプ | 説明 |
---|---|---|---|
StartUrl | Yes | string | 診断対象URL (例: "https://www.ncloud.com" ) |
ExcludeUrl | Yes | list | 診断除外URLリスト (例: [ "https://www.ncloud.com/events"、"https://www.ncloud.com/product/security/webSecurityChecker"] ) |
Headers | No | object | 認証のためのHTTP Header情報 (ex. { "Cookie": "JSESSIONID=AB123123123123ASAS", "Accept": "text/html.....", "Authorization": "Bearer ejs..." ) |
VulnItems | Yes | list | 診断項目リスト (例: [ "ALL" ] 、["XSS", "SSI Injection", ...] ) |
UserAgent | Yes | string | 診断作業に利用するブラウザ(User-Agent)情報を選択 ( "Android" 、"iPhone" 、"PC Chrome" 、"PC IE" の予約語のうち1つを選択) |
Speed | Yes | string | 診断作業の速度を調整 ( "1" -普通、"2" -やや早く、"3" -早くの3つのうち1つを選択) |
Memo | No | string | メモ (例: "上半期のセキュリティ診断" ) |
MasterInstanceNo | No | string | 再診断作業を作成する、完了済み診断のインスタンス番号(InstanceNo) 再診断のためのインスタンス番号は、getJobs (Web Security Checker) APIから確認できます。 (例: "1234111231" ) |
リクエストヘッダー
IAM認証のためのリクエストヘッダーです。
ヘッダー名 | 説明 |
---|---|
x-ncp-apigw-timestamp | 1970年1月1日00:00:00協定世界時(UTC)からの経過時間をミリ秒単位(Millisecond)で表したものです。 API Gatewayサーバとの時間差が5分以上ある場合、有効でないリクエストとして見なします。 |
x-ncp-iam-access-key | NAVERクラウドプラットフォームのIAMから発行されたAccessKeyです。 |
x-ncp-apigw-signature-v2 | リクエストパスやヘッダーをAccessKeyとマッピングされるSecretKeyで暗号化した署名で HMACの暗号化アルゴリズムはHmacSHA256を使用します。 |
予約語の説明
UserAgentの予約語リスト
Web Securtiy Checkerは、ユーザーのウェブサイトに最適なブラウザを選択できるように診断オプションを提供します。
APIユーザーは、次のテーブルの予約語に関する説明を参考にして予約語を選択してからAPIを呼び出します。
予約語 | 説明 |
---|---|
PC Chrome | PC環境のChromeブラウザ |
PC IE | PC環境のInternet Explorerブラウザ |
iPhone | モバイル環境のiPhoneブラウザ |
Android | モバイル環境のAndroidブラウザ |
診断項目の予約語リスト
診断作成APIは、診断項目を明示して、希望する診断を選択して行えるような機能を提供します。
診断項目に関する詳しい内容は、Web Security Checker紹介ページ > 診断項目 からも確認できます。
- すべての点検項目で診断を実行する場合、
ALL
キーワードを使用してください。 - 一部の点検項目だけで診断を実行する場合、次のテーブルから希望するキーワードを選択してください。
予約語 | 説明 |
---|---|
ALL | Web Security Checkerがサポートするすべての診断項目で診断を実行します。(推奨オプション) |
LFI | Webサーバの内部に存在する、悪意のあるファイルをIncludeして、そのファイルを実行する脆弱性です。 |
SQL Injection | Webアプリケーションで使用されるSQL構文に攻撃者が任意の構文を注入(Injection)して、内部データベースのデータを流出・変造する脆弱性です。 |
XSS | 攻撃者がWebページに悪性スクリプトを挿入する脆弱性です。 |
RFI | 遠隔地の攻撃者サーバに存在する、悪意のあるファイルをIncludeして、そのファイルを実行する脆弱性です。 |
SSRF | 外部からはアクセスできない内部の他のサーバにリクエストするように介入し、内部サーバに意図していない行為をさせる脆弱性です。 |
File Upload | 悪意のあるスクリプトファイルをWebサーバにアップロードしてアクセスする場合、Webサーバのユーザー権限で実行されてしまう脆弱性です。 |
File Download | サーバに存在するファイルが意図せずにクライアントにダウンロードされる脆弱性です。 |
XXE | XML文書で動的に外部URIのリソースを含めるExternal Entity機能を悪用し、意図していない動作をさせる脆弱性です。 |
Command Injection | 攻撃者がサーバに直接コマンドを伝えて実行させる脆弱性です。 |
Insufficient Authorization | 一般的にユーザーに非表示にすべき特定のWebアプリケーションに対するアクセス可能有無を点検する項目です。 |
Specific Vulnerability | 特定のアプリケーションに関して影響力の大きい脆弱性について点検する項目です。 |
File Management | Webサーバの運用に不要なファイルはすべて削除するか、他のシステムで管理する必要があります。 |
Directory Listing | ディレクトリ内のファイルリストが表示される脆弱性です。 |
Source Code Disclosure | Webサーバがスクリプトファイルを正常に処理できないことにより、ソースコードがそのまま表示される脆弱性です。 |
Information Disclosure | Webサービスでサーバ情報、エラー情報などの攻撃に活用できる情報が表示される脆弱性です。 |
URL Redirection | ユーザーが意図していないページに移動させる脆弱性です。 |
Insecure SSL/TLS | 安全でないSSL/TLSバージョンの使用によって発生し得る脆弱性を点検する項目です。 |
Mixed Content | 保護されるべき重要なコンテンツがHTTPを介して伝送されてしまう脆弱性です。 |
HTTP Request Smuggling | 攻撃者が偽装されたHTTPパケットをWebサーバに転送し、遠隔地にいる不特定のユーザーがWebサーバに転送するHTTPパケットを偽装する脆弱性です。 |
Personal Information Exposure | 住民登録番号、クレジットカード番号などの個人情報がWebサービスに平文で露出される脆弱性です。 |
SSI Injection | SSI(Server-Side Includes)設定によって悪意のある動的HTMLコードが実行されてしまう脆弱性です。 |
例
- 次の例を参考にしてAPIを使用してください。
リクエスト例1(診断作業の作成)
curl -X PUT "https://wsc.apigw.ntruss.com/api/v1/job"
-H "accept: application/json"
-H "x-ncp-iam-access-key: {x-ncp-iam-access-key}"
-H "x-ncp-apigw-timestamp: {x-ncp-apigw-timestamp}"
-H "x-ncp-apigw-signature-v2: {x-ncp-apigw-signature-v2}"
--data-raw '{
"StartUrl": "https://www.ncloud.com",
"ExcludeUrl": [
"https://www.ncloud.com/event",
"https://www.ncloud.com/robot.txt"
],
"Headers": {
"Upgrade-Insecure-Requests": "1",
"Accept": "text/html.....",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
"Cookie": "XSRF-TOKEN=eyJ.....; PHPSESSIONID=e.....",
"X-Custom-Header": "Bar"
},
"VulnItems": [
"ALL"
],
"UserAgent": "Android",
"Speed": "1",
"Memo": "OPEN API TEST"
}'
リクエスト例2(再診断作業の作成)
リクエスト例2-1.再診断できる診断検索(手動)
- getJobs(Web Security Checker) APIを利用して診断リストを呼び出します。
- レスポンスで
resources > record_data
プロパティの項目のうち、"rescan_button": "possible"
と表記された項目を検索します。 - 前段階で検索した項目の
instanceNo
をコピーします。
- 備考:
rescan_button
の値がnull
またはexpired
の場合は再診断できません。
curl -X GET "https://wsc.apigw.ntruss.com/api/v1/jobs?limit=10&page=1"
-H "accept: application/json"
-H "x-ncp-iam-access-key: {x-ncp-iam-access-key}"
-H "x-ncp-apigw-timestamp: {x-ncp-apigw-timestamp}"
-H "x-ncp-apigw-signature-v2: {x-ncp-apigw-signature-v2}"
{
"returnCode": "0",
"returnDesc": "Request Success",
"returnMessage": "成功",
"resources": {
"total_cnt": 1,
"total_page_cnt": "1",
"current_start_page": "1",
"current_end_page": "10",
"record_data": [
{
"instanceNo": "12311231",
"start_date": "2020-12-02 23:34:54",
"end_date": "2020-12-02 23:36:43",
"status": "Complete",
"start_url": "http://ncloud.com",
"crawl_cnt": "10",
"scan_cnt": "1",
"memo": "OPEN APIテスト(#1)",
"result_button": "report",
"result_desc": null,
"rescan_button": "possible",
"slave_data": null
},
]
}
}
リクエスト例2-1-1.再診断できる診断検索(ユーティリティ使用)
- getJobs(Web Security Checker) APIと
jq
ユーティリティを利用して再診断できるinstanceNoリストを確認します。- この例で、instanceNoは「12311231」です。
- もし、instanceNoがない場合、再診断できる診断作業がないことを意味します。
curl -X GET "https://wsc.apigw.ntruss.com/api/v1/jobs?limit=10&page=1"
-H "accept: application/json"
-H "x-ncp-iam-access-key: {x-ncp-iam-access-key}"
-H "x-ncp-apigw-timestamp: {x-ncp-apigw-timestamp}"
-H "x-ncp-apigw-signature-v2: {x-ncp-apigw-signature-v2}" | jq '.resources.record_data[] | select( .rescan_button == "possible" ) | .instanceNo'
%"12311231"
リクエスト例2-2.診断作業呼び出し
- masterInstanceNoパラメータに先ほど取得した
"12311231"
を入力します。- 必ず文字列タイプで番号を入力してください。
curl -X PUT "https://wsc.apigw.ntruss.com/api/v1/job"
-H "accept: application/json"
-H "x-ncp-iam-access-key: {x-ncp-iam-access-key}"
-H "x-ncp-apigw-timestamp: {x-ncp-apigw-timestamp}"
-H "x-ncp-apigw-signature-v2: {x-ncp-apigw-signature-v2}"
--data-raw '{
"StartUrl": "https://www.ncloud.com",
"ExcludeUrl": [
"https://www.ncloud.com/event",
"https://www.ncloud.com/robot.txt"
],
"Headers": {
"Upgrade-Insecure-Requests": "1",
"Accept": "text/html.....",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
"Cookie": "XSRF-TOKEN=eyJ.....; PHPSESSIONID=e.....",
"X-Custom-Header": "Bar"
},
"VulnItems": [
"ALL"
],
"UserAgent": "Android",
"Speed": "1",
"Memo": "OPEN API TEST",
"MasterInstanceNo": "12311231"
}'
%{
"returnCode": "0",
"returnDesc": "Request Success",
"returnMessage": "成功",
"resources": null
}
レスポンス例1(診断作業の作成完了)
{
"returnCode": "0",
"returnDesc": "Request Success",
"returnMessage": "成功",
"resources": null
}
レスポンス例2(予約語の入力エラー)
ユーザーリクエストのVulnItems
パラメータに診断項目の予約語リスト
にないキーワードが存在する場合、次のようなエラーが発生します。
また、ALL
予約語をXSS
などの予約語と一緒に使用する場合、次のようなエラーが発生します。
{
"error": {
"errorCode": 160433,
"message": "Param Value Not Define - VulnItems"
}
}
レスポンス例2-1(予約語の入力エラー)
ALL
予約語を使用する場合、他の予約語は使用できません。
curl -X PUT "https://wsc.apigw.ntruss.com/api/v1/job"
-H "accept: application/json"
-H "x-ncp-iam-access-key: {x-ncp-iam-access-key}"
-H "x-ncp-apigw-timestamp: {x-ncp-apigw-timestamp}"
-H "x-ncp-apigw-signature-v2: {x-ncp-apigw-signature-v2}"
--data-raw '{
"StartUrl": "https://www.ncloud.com",
"ExcludeUrl": [
"https://www.ncloud.com/event",
"https://www.ncloud.com/robot.txt"
],
"Headers": {
"Upgrade-Insecure-Requests": "1",
"Accept": "text/html.....",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
"Cookie": "XSRF-TOKEN=eyJ.....; PHPSESSIONID=e.....",
"X-Custom-Header": "Bar"
},
"VulnItems": [
"ALL",
"XSS"
],
"UserAgent": "Android",
"Speed": "1",
"Memo": "OPEN API TEST"
}'
%{
"error": {
"errorCode": 160433,
"message": "Param Value Not Define - VulnItems"
}
}
レスポンス例2-2(パラメータのタイプエラー)
VulnItems
パラメータは配列(list)タイプのみを許可します。VulnItems: "ALL"
を入力する場合、エラーが発生します。
curl -X PUT "https://wsc.apigw.ntruss.com/api/v1/job"
-H "accept: application/json"
-H "x-ncp-iam-access-key: {x-ncp-iam-access-key}"
-H "x-ncp-apigw-timestamp: {x-ncp-apigw-timestamp}"
-H "x-ncp-apigw-signature-v2: {x-ncp-apigw-signature-v2}"
--data-raw '{
"StartUrl": "https://www.ncloud.com",
"ExcludeUrl": [
"https://www.ncloud.com/event",
"https://www.ncloud.com/robot.txt"
],
"Headers": {
"Upgrade-Insecure-Requests": "1",
"Accept": "text/html.....",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
"Cookie": "XSRF-TOKEN=eyJ.....; PHPSESSIONID=e.....",
"X-Custom-Header": "Bar"
},
"VulnItems": "ALL",
"UserAgent": "Android",
"Speed": "1",
"Memo": "OPEN API TEST"
}'
%{
"error": {
"errorCode": 160431,
"message": "VulnItems should be list"
}
}
レスポンス例3(サーバ所有有無のチェック)
顧客本人の資産でないサーバに対して診断をリクエストする場合、次のようなエラーが発生します。
APIを利用するアカウントのサーバに対する権限を確認してください。
{
"error": {
"errorCode": 160451,
"message": "Assets_Check_Fail"
}
}
この記事は役に立ちましたか?