Python URL Doğrulama ve SSRF Koruması

0 Yanıt 1 Görüntülenme
Puanlayanlar
Katılımcılar
Konuyu Açan #1
Giriş
Web uygulamalarında URL doğrulaması, kullanıcıdan alınan veya harici kaynaklardan gelen adreslerin güvenli ve doğru olup olmadığını kontrol etme sürecidir. Özellikle SSRF (Server-Side Request Forgery) saldırılarına karşı koruma sağlamak, uygulamanın güvenliğini artırmak açısından kritik öneme sahiptir. Bu noktada Python dilinde, URL doğrulama ve SSRF koruma yöntemleri detaylı şekilde incelenmelidir.

URL Doğrulama Süreci
İlk adım, alınan URL’nin yapısal bütünlüğünü ve geçerliliğini kontrol etmektir. Python’da bunun için standart kütüphanelerden urllib.parse ve validators gibi araçlar kullanılabilir. Örneğin, validators.url fonksiyonu, URL’nin formatını temel seviyede doğrular. Ancak, bu sadece yapısal doğrulama sağlar; URL’nin içeriği veya güvenliği konusunda detaylı analiz gerekebilir.

Örnek:
KOD
12345678
import validators

url = "http://example.com"
if validators.url(url):
    print("Geçerli URL")
else:
    print("Geçersiz URL")


Ancak, bu aşamada URL’nin gerçekten erişilebilir olup olmadığını veya istenmeyen içerik barındırmadığını kontrol etmek gerekir.

Gelişmiş Güvenlik Kontrolleri ve SSRF Koruması
SSRF saldırıları, saldırganların sunucu tarafında istenmeyen hedeflere istek göndermesini sağlar. Bu nedenle, URL’nin sadece belirli alan adlarına veya IP adreslerine yönlendirilmesine izin verilmelidir. Ayrıca, IP adresleri veya alan adlarının içeriği, DNS ve IP adresleri arasında tutarlılık kontrol edilmelidir.

İşte temel alınabilecek bazı önlemler:
  1. Whitelist uygulaması: Sadece belirli güvenilir alan adlarına izin verilir. Bu, DNS çözümlemesi sonrası IP doğrulamasıyla desteklenebilir.
  2. IP adresi kontrolü: URL’nin çözümlediği IP adresinin, whitelistteki adreslerle eşleştiğini doğrula.
  3. Hedef adresin sınırlandırılması: Örneğin, sadece kendi iç ağı veya belirli sunuculara istek yapılmasına izin verilir.
  4. DNS ve IP tutarlılığı: DNS çözümlemesi ve IP adresi kontrolü yapılarak, DNS spoofing saldırıları engellenir.


Örnek:
KOD
12345678910111213141516171819202122232425262728293031
import socket
from urllib.parse import urlparse

allowed_domains = ['trusted.com', 'api.trusted.com']

def is_url_safe(url):
    parsed = urlparse(url)
    domain = parsed.hostname
    
    # Alan adını doğrula
    if domain not in allowed_domains:
        return False
    
    # DNS çözümlemesi
    ip = socket.gethostbyname(domain)
    
    # IP adresini whitelist ile karşılaştır
    allowed_ips = ['192.168.1.10', '192.168.1.20']
    if ip not in allowed_ips:
        return False
    
    return True

test_url = "http://api.trusted.com/data"
if is_url_safe(test_url):
    # Güvenli ise, istek gerçekleştirilebilir
    pass
else:
    # Güvenli olmayan URL engellenir
    pass


Sonuç ve Uygulama Tavsiyeleri
Python’da URL doğrulama ve SSRF koruması, birkaç adımı içerir: temel format doğrulaması, alan adı ve IP adresi kontrolü ve whitelist uygulaması. Bu yöntemler, saldırganların sunucu üzerinden zararlı adreslere erişimini engellemek ve uygulama güvenliğini artırmak açısından kritik önemdedir. Ayrıca, düzenli olarak güncellenen ve sıkılaştırılan güvenlik politikaları, uygulama güvenliğinin sürekliliği için temel unsurlardır.

SSRF saldırılarına karşı koruma, sadece teknik önlemlerle değil, aynı zamanda sistem mimarisi ve erişim kontrolleriyle de desteklenmelidir. Güvenli URL doğrulaması ve IP kontrol mekanizmalarının doğru uygulanması, saldırı riskini önemli ölçüde azaltacaktır.

Yanıt vermek için giriş yapmış olmalısınız.

Bu konuyu görüntüleyen kullanıcılar (Toplam: 2, Üyeler: 2, Misafirler: 0)
Toplam: 2 (üyeler: 2, misafirler: 0)
0 alıntı seçildi