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 ที่เกี่ยวกับการเก็บรวบรวม การแชร์ และแนวทางปฏิบัติด้านการรักษาความปลอดภัยข้อมูลผู้ใช้ในแอปอย่างไร