Fayl bilan tartibli ishlash
Lokal skriptda with open(path, encoding="utf-8") as f faylni xatoda ham yopadi. Katta logni birdan read() qilish o‘rniga qatorlab o‘qing. Matn va ikkilik rejimni ajrating; rasm yoki hash uchun rb kerak.
Yo‘l va path traversal
Foydalanuvchi bergan ../ baza katalogidan chiqishi mumkin. Serverda haqiqiy Path.resolve() bilan yo‘lni normallashtirib, bazaga tegishliligini tekshirish kerak. Quyidagi PurePosixPath misoli faqat sintaktik tahlil; symlink va haqiqiy filesystem himoyasini to‘liq bajarmaydi.
Resurs chegaralari
Fayl hajmiga limit qo‘ying, nomni server tanlasin va muhim faylni ustidan yozmang. Brauzer muhiti virtual fayl tizimiga ega; hostdagi /etc yoki ishchi papkangizga kira olmaydi. O‘quv ma’lumoti sifatida maxsus fixture yarating.
Python’da ko‘rib chiqamiz
from pathlib import PurePosixPath
names = ["reports/day.txt", "../secret.txt", "logs/auth.txt"]
safe = [name for name in names if ".." not in PurePosixPath(name).parts]
print(len(safe))Misolni
Mustaqil mashq
Lokal vaqtinchalik katalog yarating. Path.resolve va is_relative_to yordamida katalogdan chiqishni tekshiring. Oddiy fayl, ../ va symlink holatlarini alohida sinang.