Skip to main content
Dokumentasi
Pusat Pembelajaran

Kuasai moderasi konten dengan panduan lengkap, tutorial, dan dokumentasi API

Tautan Cepat

Pemindaian Antivirus File

Discuse memindai file untuk mendeteksi malware sebelum file tersebut sampai ke pengguna Anda. Ada dua cara untuk menggunakannya: aktifkan check_antivirus pada POST /api/v2/check untuk memindai URL dokumen bersama pemeriksaan lainnya, atau gunakan endpoint khusus POST /api/v2/scan untuk memindai satu file dan mendapatkan laporan lengkap, termasuk nama ancaman dan hash SHA-256.

Mengapa perlu memindai file yang diunggah?

Unggahan file adalah salah satu vektor serangan yang umum. Menyebarkan malware melalui platform Anda dapat membahayakan data pengguna, reputasi, dan infrastruktur Anda sendiri. Memindai setiap file sebelum Anda menyimpan atau menyajikannya akan menutup celah tersebut.

Bagaimana cara kerja pemindaian?

Saat Anda mengirimkan URL file, Discuse mengunduh file tersebut ke lingkungan yang terisolasi, memindainya, lalu mengembalikan informasi apakah ancaman ditemukan. File yang identik akan di-cache sehingga pemindaian berulang dapat berjalan cepat.

Opsi 1: pindai file di dalam permintaan /check

Kirim URL dokumen di content.document_urls dan aktifkan check_antivirus. Ini adalah pilihan yang tepat saat Anda memoderasi pesan yang juga memiliki lampiran.

curl -X POST https://api.discuse.com/api/v2/check \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "content": {
      "document_urls": ["https://example.com/uploaded-file.pdf"]
    },
    "settings": {
      "check_antivirus": true
    }
  }'

Satu permintaan dapat menerima hingga 5 URL dokumen.

Respons

{
  "has_violations": true,
  "cached": false,
  "message": "Malware detected in file",
  "results": {
    "hits": true,
    "antivirus": {
      "status": "FOUND",
      "hit": true,
      "details": [
        {
          "type": "malware",
          "details": "Trojan.GenericKD.12345678",
          "result": true
        }
      ]
    }
  }
}

Hasil antivirus di bawah results.antivirus memiliki tiga field: status, hit, dan array details. Setiap entri details membawa type, details (nama ancaman atau pesan), confidence, dan result.

Opsi 2: pindai satu file dengan /api/v2/scan

Endpoint pemindaian khusus mengembalikan laporan yang lebih kaya untuk satu file, termasuk nama ancaman, hash file, dan durasi pemindaian.

curl -X POST https://api.discuse.com/api/v2/scan \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "file_url": "https://example.com/uploaded-file.pdf",
    "file_name": "uploaded-file.pdf"
  }'

Respons

{
  "hit": true,
  "status": "FOUND",
  "description": "Trojan.GenericKD.12345678",
  "file_name": "uploaded-file.pdf",
  "file_hash": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
  "scan_time_ms": 1250
}

Field permintaan /api/v2/scan

Field Tipe Catatan
api_key string Opsional di body; Anda dapat mengirim X-API-Key sebagai gantinya
file_url string URL file yang akan dipindai
file_name string Nama file opsional untuk laporan

Sediakan file_url. Base64 file_data didefinisikan dalam skema, tetapi belum didukung — permintaan yang hanya berisi file_data akan mengembalikan error yang meminta Anda menggunakan file_url.

Field respons /api/v2/scan

Field Tipe Deskripsi
hit boolean True saat malware terdeteksi
status string OK (bersih), FOUND (malware), atau ERROR
description string Nama ancaman, atau pesan error
file_name string Nama file yang dipindai
file_hash string Hash SHA-256 file
scan_time_ms number Durasi pemindaian dalam milidetik

Batas penggunaan

Pemindaian antivirus hanya tersedia pada paket berbayar. Setiap file yang dipindai dihitung satu kali terhadap kuota.

Paket Pemindaian Bulanan Tarif Kelebihan
Basic Tidak tersedia -
Gold 500 $0.001/scan
Platinum 1,500 $0.00085/scan (diskon 15%)
Ultimate 3,000 $0.00075/scan (diskon 25%)

Jika sebuah proyek tidak memiliki langganan aktif, pemindaian antivirus akan ditolak.

Praktik terbaik

Pindai sebelum penyimpanan

Pindai file sebelum menyimpannya secara permanen, sehingga file yang terinfeksi tidak pernah masuk ke sistem Anda:

async function handleFileUpload(fileUrl, fileName) {
  const result = await scanFile(fileUrl, fileName);

  if (result.hit) {
    throw new Error('Infected file detected: ' + result.description);
  }
  await storeFile(fileUrl);
}

Buat percabangan berdasarkan status

Bedakan file yang bersih dari pemindaian yang gagal:

const result = await scanFile(fileUrl, fileName);

switch (result.status) {
  case 'FOUND': await rejectAndNotify(fileUrl, result.description); break;
  case 'ERROR': await quarantineForReview(fileUrl); break;
  case 'OK':    await storeFile(fileUrl); break;
}

Gunakan ulang URL yang konsisten

File yang identik akan di-cache. Menggunakan URL file yang stabil memungkinkan pemindaian berulang dikembalikan dari cache alih-alih mengunduh ulang.

Contoh integrasi

Node.js (endpoint pemindaian khusus)

async function scanFile(fileUrl, fileName) {
  const response = await fetch('https://api.discuse.com/api/v2/scan', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.DISCUSE_API_KEY
    },
    body: JSON.stringify({ file_url: fileUrl, file_name: fileName })
  });

  return response.json();
}

Python (endpoint pemindaian khusus)

import os
import requests

def scan_file(file_url, file_name=None):
    response = requests.post(
        'https://api.discuse.com/api/v2/scan',
        headers={
            'Content-Type': 'application/json',
            'X-API-Key': os.environ['DISCUSE_API_KEY']
        },
        json={'file_url': file_url, 'file_name': file_name}
    )
    return response.json()

Siap melindungi platform Anda dari malware? Mulai dengan Discuse.

Ditulis oleh Tim Discuse · Terakhir diperbarui June 2026

Artikel Terkait

Analisis Teks dan Deteksi Sentimen

Deteksi spam, toksisitas, kata-kata kasar, dan analisis sentimen dalam konten teks

Deteksi NSFW pada Gambar

Deteksi dan filter gambar tidak pantas serta konten dewasa secara otomatis

Deteksi Spam

Pemfilteran spam berbasis AI untuk teks dan pesan