İçeriğe geç

İndirilecek dosyanın yolunu bulma

Güvenlik · Zorluk 2/5 · Python · 19 satırKöken: Kurgu

Görev

Yapay zekâdan istenen

Dosya indirme uç noktamız için bir yardımcı yaz: istekteki dosya adını alsın ve yüklemeler klasörünün içindeki tam yolu döndürsün; ad boşsa ya da klasörün dışını gösteriyorsa None döndürsün.

Teslim notu

Yapay zekâ kodu teslim ederken şunu yazdı:

“Dizin aşımı engellendi: yol realpath ile çözülüp yüklemeler köküyle karşılaştırılıyor; ../ hileleri, sembolik bağlar ve mutlak yollar reddediliyor.”

Yapay zekânın yazdığı kod

Python19 satır

Hatalı bulduğun satırları işaretle; her işarete önem seç ve nedenini bir cümleyle yaz.

Satıra tıkla ya da dokun. Klavyede satıra gidip Enter'a bas.

0/5 işaret
Önem nasıl seçilir
  • KritikVeri kaybı, güvenlik açığı ya da para kaybı
  • ÖnemliGörevin istediği bir durumda kullanıcı yanlış sonuç alır
  • KüçükGörevin dışında kalan nadir bir uç durum ya da okunurluk

Test konusunda önem, testin yakalamadığı hatalı uygulamanın etkisine göre belirlenir.

Gerekçe puanlanmaz; sonuçta örnek cevapla karşılaştırırsın.

import os
2
UPLOAD_ROOT = os.path.realpath("uploads")
4
5
def resolve_upload(name: str, root: str = UPLOAD_ROOT) -> str | None:
    """Return the absolute path for a requested upload.
8
    Returns None when the name is empty or points outside the upload root.
    """
    if not name or "\x00" in name:
        return None
13
    root = os.path.realpath(root)
    candidate = os.path.realpath(os.path.join(root, name))
    if not candidate.startswith(root):
        return None
18
    return candidate

Kanıtlayan test

Doğru seçenek, bu kodda başarısız olan, yani hatayı ortaya çıkaran testtir.

Test seçenekleri
Göndermek için en az bir satır işaretle.

Gönderince sayaca yedi bilgi gider; gerekçe metnin cihazında kalır. Veriler