Bir dosyaya, o dosyanın zaten var olup olmadığına göre yazmak istiyorum, sadece halihazırda mevcut değilse yazıyorum (pratikte, var olmayan bir dosyayı bulana kadar dosyaları denemeye devam etmek istiyorum).
Aşağıdaki kod, potansiyel olarak bir saldırganın, bu yazıda önerildiği gibi , dosya için bir test ile yazılan dosya arasında bir sembolik bağ ekleyebileceği bir yolu gösterir . Kod yeterince yüksek izinlerle çalıştırılırsa, bu rastgele bir dosyanın üzerine yazabilir.
Bu sorunu çözmenin bir yolu var mı?
import os
import errno
file_to_be_attacked = 'important_file'
with open(file_to_be_attacked, 'w') as f:
f.write('Some important content!\n')
test_file = 'testfile'
try:
with open(test_file) as f: pass
except IOError, e:
# symlink created here
os.symlink(file_to_be_attacked, test_file)
if e.errno != errno.ENOENT:
raise
else:
with open(test_file, 'w') as f:
f.write('Hello, kthxbye!\n')