Dosya Antivirüs Taraması
Discuse, dosyalar kullanıcılarınıza ulaşmadan önce kötü amaçlı yazılımlara karşı tarar. Bunu çağırmanın iki yolu vardır: belge URL’lerini diğer kontrollerle birlikte taramak için POST /api/v2/check üzerinde check_antivirus özelliğini etkinleştirebilir veya tek bir dosyayı tarayıp tehdit adı ve SHA-256 karması dahil eksiksiz bir rapor almak için özel POST /api/v2/scan uç noktasını kullanabilirsiniz.
Yüklenen dosyalar neden taranmalı?
Dosya yüklemeleri yaygın bir saldırı vektörüdür. Platformunuz üzerinden kötü amaçlı yazılım dağıtılması kullanıcı verilerini, itibarınızı ve kendi altyapınızı riske atar. Her dosyayı saklamadan veya sunmadan önce taramak bu açığı kapatır.
Tarama nasıl çalışır?
Bir dosya URL’si gönderdiğinizde Discuse dosyayı yalıtılmış bir ortama indirir, tarar ve bir tehdit bulunup bulunmadığını döndürür. Aynı dosyalar önbelleğe alınır; böylece tekrarlanan taramalar hızlı gerçekleşir.
Seçenek 1: dosyaları bir /check isteği içinde tarama
Belge URL’lerini content.document_urls içinde gönderin ve check_antivirus özelliğini etkinleştirin. Ek de içeren bir mesajı denetliyorsanız doğru kullanım budur.
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
}
}'
Tek bir istek en fazla 5 belge URL’si kabul eder.
Yanıt
{
"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
}
]
}
}
}
results.antivirus altındaki antivirüs sonucu üç alan içerir: status, hit ve bir details dizisi. Her details girdisi type, details (tehdit adı veya mesaj), confidence ve result bilgilerini taşır.
Seçenek 2: /api/v2/scan ile tek bir dosyayı tarama
Özel tarama uç noktası, tek bir dosya için tehdit adı, dosya karması ve tarama süresi dahil daha zengin bir rapor döndürür.
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"
}'
Yanıt
{
"hit": true,
"status": "FOUND",
"description": "Trojan.GenericKD.12345678",
"file_name": "uploaded-file.pdf",
"file_hash": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"scan_time_ms": 1250
}
/api/v2/scan istek alanları
| Alan | Tür | Notlar |
|---|---|---|
api_key |
string | Gövdede isteğe bağlıdır; bunun yerine X-API-Key gönderebilirsiniz |
file_url |
string | Taranacak dosyanın URL’si |
file_name |
string | Rapor için isteğe bağlı dosya adı |
file_url sağlayın. Base64 file_data şemada tanımlıdır ancak henüz desteklenmemektedir — yalnızca file_data içeren bir istek, file_url kullanmanızı isteyen bir hata döndürür.
/api/v2/scan yanıt alanları
| Alan | Tür | Açıklama |
|---|---|---|
hit |
boolean | Kötü amaçlı yazılım tespit edildiğinde True |
status |
string | OK (temiz), FOUND (kötü amaçlı yazılım) veya ERROR |
description |
string | Tehdit adı veya bir hata mesajı |
file_name |
string | Taranan dosya adı |
file_hash |
string | Dosyanın SHA-256 karması |
scan_time_ms |
number | Milisaniye cinsinden tarama süresi |
Kullanım sınırları
Antivirüs taraması yalnızca ücretli planlarda kullanılabilir. Taranan her dosya kotadan bir kez düşülür.
| Plan | Aylık Tarama | Kota Aşım Ücreti |
|---|---|---|
| Basic | Kullanılamaz | - |
| Gold | 500 | $0.001/tarama |
| Platinum | 1,500 | $0.00085/tarama (%15 indirim) |
| Ultimate | 3,000 | $0.00075/tarama (%25 indirim) |
Bir projenin aktif aboneliği yoksa antivirüs taramaları reddedilir.
En iyi uygulamalar
Depolamadan önce tarayın
Virüslü bir dosyanın sisteminize hiç girmemesi için dosyayı kalıcı olarak depolamadan önce tarayın:
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);
}
Duruma göre dallanın
Temiz bir dosyayı, başarısız olmuş bir taramadan ayırt edin:
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;
}
Tutarlı URL’leri yeniden kullanın
Aynı dosyalar önbelleğe alınır. Sabit dosya URL’leri kullanmak, tekrarlanan taramaların dosyayı yeniden indirmek yerine önbellekten dönmesini sağlar.
Entegrasyon örnekleri
Node.js (özel tarama uç noktası)
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 (özel tarama uç noktası)
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()
Platformunuzu kötü amaçlı yazılımlardan korumaya hazır mısınız? Discuse ile başlayın.