İçeriğe geç

Dizin geçişi (ARCH2103)

Anahtar python.security.path-traversal · Önem error · Kategori security · CWE CWE-22

Dosya yolunu güvenilmeyen girdiden normalize etmeden oluşturmak, saldırganın ../ ile hedef dizin dışına çıkıp keyfi dosyalara erişmesine olanak tanır.

import os
def read_file(name):
with open(os.path.join("/var/data", name)) as f:
return f.read()
import os
BASE = "/var/data"
def read_file(name):
path = os.path.realpath(os.path.join(BASE, name))
if not path.startswith(BASE + os.sep):
raise ValueError("invalid path")
with open(path) as f:
return f.read()

Yolu normalize edin ve sonucun izin verilen kök dizin içinde kaldığını doğrulayın.