SafetyNet Safe Browsing API

SafetyNet Safe Browsing API ซึ่งเป็นไลบรารีที่ขับเคลื่อนโดย Google Play Services ให้บริการสำหรับพิจารณาว่า Google ได้ทำเครื่องหมาย URL ว่าเป็นภัยคุกคามซึ่งรู้จักหรือไม่

แอปของคุณสามารถใช้ API นี้เพื่อระบุว่า Google จัดประเภท URL หนึ่งๆ เป็นภัยคุกคามซึ่งรู้จักหรือไม่ ภายในองค์กร SafetyNet จะใช้ไคลเอ็นต์สำหรับ Safe Browsing Network Protocol v4 ที่พัฒนาโดย Google ทั้งรหัสไคลเอ็นต์และโปรโตคอลเครือข่าย v4 ได้รับการออกแบบมาเพื่อรักษาความเป็นส่วนตัวของผู้ใช้ รวมถึงใช้แบตเตอรี่และแบนด์วิดท์ให้น้อยที่สุด ใช้ API นี้เพื่อใช้ประโยชน์อย่างเต็มที่จากบริการ Safe Browsing ของ Google บน Android ด้วยวิธีการที่เพิ่มประสิทธิภาพทรัพยากรมากที่สุด โดยไม่ต้องนำโปรโตคอลเครือข่ายของบริษัทไปใช้

เอกสารนี้อธิบายวิธีใช้ SafetyNet Safe Browsing Lookup API เพื่อตรวจสอบ URL ว่ามีภัยคุกคามซึ่งทราบหรือไม่

ข้อกำหนดในการให้บริการ

การใช้ Safe Browsing API หมายความว่าคุณยินยอมที่จะผูกพันตามข้อกำหนดในการให้บริการ โปรดอ่านและทำความเข้าใจข้อกำหนดและนโยบายที่เกี่ยวข้องทั้งหมดก่อนเข้าถึง Google Safe Browsing API

ส่งคำขอและลงทะเบียนคีย์ API ของ Android

ก่อนใช้ Safe Browsing API ให้สร้างและลงทะเบียนคีย์ API ของ Android ดูขั้นตอนที่เฉพาะเจาะจงได้ที่หน้าเกี่ยวกับการเริ่มต้นใช้งาน Google Safe Browsing

เพิ่มข้อกําหนดของ SafetyNet API

ก่อนใช้ Safe Browsing API ให้เพิ่ม SafetyNet API ลงในโปรเจ็กต์ หากคุณใช้ Android Studio ให้เพิ่มทรัพยากร Dependency นี้ลงในไฟล์ Gradle ระดับแอป ดูข้อมูลเพิ่มเติมได้ที่ป้องกันภัยคุกคามด้านความปลอดภัยด้วย SafetyNet

เริ่มต้น API

หากต้องการใช้ Google Safe Browsing API คุณต้องเริ่มต้น API ด้วยการเรียกใช้ initSafeBrowsing() และรอให้ API เสร็จสมบูรณ์ ข้อมูลโค้ดต่อไปนี้เป็นตัวอย่าง

Kotlin

Tasks.await(SafetyNet.getClient(this).initSafeBrowsing())

Java

Tasks.await(SafetyNet.getClient(this).initSafeBrowsing());

ขอรับการตรวจสอบ URL

แอปของคุณสามารถใช้การตรวจสอบ URL เพื่อระบุว่า URL นั้นเป็นภัยคุกคามที่เราทราบหรือไม่ ภัยคุกคามบางประเภทอาจไม่เกี่ยวข้องกับแอปของคุณ API นี้จึงให้คุณเลือกประเภทภัยคุกคามที่สำคัญต่อความต้องการของคุณ คุณสามารถระบุประเภทภัยคุกคามซึ่งทราบแล้วได้หลายประเภท

ส่งคำขอตรวจสอบ URL

API ไม่เกี่ยวข้องกับรูปแบบที่ใช้ ดังนั้นคุณจึงสามารถส่ง URL ที่มีหรือไม่มีรูปแบบก็ได้ เช่น ทั้ง

Kotlin

var url = "https://www.google.com"

Java

String url = "https://www.google.com";

และ

Kotlin

var url = "www.google.com"

Java

String url = "www.google.com";

ได้

โค้ดต่อไปนี้แสดงวิธีส่งคำขอตรวจสอบ URL

Kotlin

SafetyNet.getClient(this).lookupUri(
       url,
       SAFE_BROWSING_API_KEY,
       SafeBrowsingThreat.TYPE_POTENTIALLY_HARMFUL_APPLICATION,
       SafeBrowsingThreat.TYPE_SOCIAL_ENGINEERING
)
       .addOnSuccessListener(this) { sbResponse ->
           // Indicates communication with the service was successful.
           // Identify any detected threats.
           if (sbResponse.detectedThreats.isEmpty()) {
               // No threats found.
           } else {
               // Threats found!
           }
       }
       .addOnFailureListener(this) { e: Exception ->
           if (e is ApiException) {
               // An error with the Google Play Services API contains some
               // additional details.
               Log.d(TAG, "Error: ${CommonStatusCodes.getStatusCodeString(e.statusCode)}")

               // Note: If the status code, s.statusCode,
               // is SafetyNetStatusCode.SAFE_BROWSING_API_NOT_INITIALIZED,
               // you need to call initSafeBrowsing(). It means either you
               // haven't called initSafeBrowsing() before or that it needs
               // to be called again due to an internal error.
           } else {
               // A different, unknown type of error occurred.
               Log.d(TAG, "Error: ${e.message}")
           }
       }

Java

SafetyNet.getClient(this).lookupUri(url,
         SAFE_BROWSING_API_KEY,
         SafeBrowsingThreat.TYPE_POTENTIALLY_HARMFUL_APPLICATION,
         SafeBrowsingThreat.TYPE_SOCIAL_ENGINEERING)
   .addOnSuccessListener(this,
       new OnSuccessListener<SafetyNetApi.SafeBrowsingResponse>() {
           @Override
           public void onSuccess(SafetyNetApi.SafeBrowsingResponse sbResponse) {
               // Indicates communication with the service was successful.
               // Identify any detected threats.
               if (sbResponse.getDetectedThreats().isEmpty()) {
                   // No threats found.
               } else {
                   // Threats found!
               }
        }
   })
   .addOnFailureListener(this, new OnFailureListener() {
           @Override
           public void onFailure(@NonNull Exception e) {
               // An error occurred while communicating with the service.
               if (e instanceof ApiException) {
                   // An error with the Google Play Services API contains some
                   // additional details.
                   ApiException apiException = (ApiException) e;
                   Log.d(TAG, "Error: " + CommonStatusCodes
                       .getStatusCodeString(apiException.getStatusCode()));

                   // Note: If the status code, apiException.getStatusCode(),
                   // is SafetyNetStatusCode.SAFE_BROWSING_API_NOT_INITIALIZED,
                   // you need to call initSafeBrowsing(). It means either you
                   // haven't called initSafeBrowsing() before or that it needs
                   // to be called again due to an internal error.
               } else {
                   // A different, unknown type of error occurred.
                   Log.d(TAG, "Error: " + e.getMessage());
               }
           }
   });

อ่านคำตอบจากการตรวจสอบ URL

เมื่อใช้ออบเจ็กต์ SafetyNetApi.SafeBrowsingResponse ที่แสดงผล ให้เรียกใช้เมธอด getDetectedThreats() ของออบเจ็กต์ ซึ่งจะแสดงรายการออบเจ็กต์ SafeBrowsingThreat หากรายการที่แสดงผลว่างเปล่า แสดงว่า API ตรวจไม่พบภัยคุกคามใดๆ ที่รู้จัก หากรายการไม่ว่างเปล่า ให้เรียกใช้ getThreatType() กับองค์ประกอบแต่ละรายการในรายการเพื่อระบุว่า API ตรวจพบภัยคุกคามใดที่รู้จัก

หากต้องการดูภาษาคำเตือนที่แนะนำ โปรดดูคู่มือสำหรับ Google Safe Browsing API สำหรับนักพัฒนาซอฟต์แวร์

ระบุประเภทภัยคุกคามที่สนใจ

ค่าคงที่ในคลาส SafeBrowsingThreat มีประเภทภัยคุกคามที่รองรับในปัจจุบัน ดังนี้

ประเภทภัยคุกคาม คำจำกัดความ
TYPE_POTENTIALLY_HARMFUL_APPLICATION ภัยคุกคามประเภทนี้จะระบุ URL ของหน้าที่มีการแจ้งว่ามีแอปพลิเคชันที่อาจเป็นอันตราย
TYPE_SOCIAL_ENGINEERING ภัยคุกคามประเภทนี้จะระบุ URL ของหน้าเว็บที่ได้รับแจ้งว่ามีภัยคุกคามจากวิศวกรรมสังคม

เมื่อใช้ API คุณต้องเพิ่มค่าคงที่ประเภทภัยคุกคามเป็นอาร์กิวเมนต์ คุณจะเพิ่มค่าคงที่ประเภทภัยคุกคามได้มากเท่าที่แอปต้องการ แต่คุณจะใช้ได้เฉพาะค่าคงที่ที่ไม่ได้ทำเครื่องหมายเป็นเลิกใช้งาน

ปิดเซสชัน Google Safe Browsing

หากแอปไม่จำเป็นต้องใช้ Safe Browsing API เป็นระยะเวลานาน ให้ตรวจสอบ URL ที่จำเป็นทั้งหมดภายในแอป แล้วปิดเซสชัน Safe Browsing โดยใช้วิธีต่อไปนี้shutdownSafeBrowsing()

Kotlin

SafetyNet.getClient(this).shutdownSafeBrowsing()

Java

SafetyNet.getClient(this).shutdownSafeBrowsing();

เราขอแนะนำให้คุณเรียกใช้ shutdownSafeBrowsing() ในเมธอด onPause() ของกิจกรรม และเรียกใช้ initSafeBrowsing() ในเมธอด onResume() ของกิจกรรม อย่างไรก็ตาม โปรดตรวจสอบว่า initSafeBrowsing() ได้เสร็จสิ้นการดำเนินการแล้วก่อนที่จะเรียกใช้ lookupUri() การตรวจสอบว่าเซสชันของคุณใหม่อยู่เสมอจะช่วยลดโอกาสที่จะเกิดข้อผิดพลาดภายในในแอป

ข้อมูลที่รวบรวมโดย SafetyNet Safe Browsing API

SafetyNet Safe Browsing API จะรวบรวมข้อมูลต่อไปนี้โดยอัตโนมัติเมื่อสื่อสารกับบริการ Google Safe Browsing ใน Android

ข้อมูล คำอธิบาย
กิจกรรมบนแอป รวบรวมคำนำหน้าแฮชของ URL หลังจากที่คำนำหน้าแฮชในเครื่องตรงกันเพื่อตรวจหา URL ที่เป็นอันตราย

แม้ว่าเราจะมุ่งมั่นที่จะสร้างความโปร่งใสมากที่สุดเท่าที่จะทําได้ แต่คุณมีหน้าที่รับผิดชอบแต่เพียงผู้เดียวในการตัดสินใจว่าจะตอบกลับแบบฟอร์มส่วนความปลอดภัยของข้อมูล Google Play ที่เกี่ยวกับการเก็บรวบรวม การแชร์ และแนวทางปฏิบัติด้านการรักษาความปลอดภัยข้อมูลผู้ใช้ในแอปอย่างไร