আমি ফাইলটি ইতিমধ্যে উপস্থিত রয়েছে কি না তার ভিত্তিতে কোনও ফাইলে লিখতে চাই, এটি ইতিমধ্যে উপস্থিত না থাকলে কেবল লেখাই (বাস্তবে, আমি উপস্থিত না থাকা ফাইল খুঁজে না পাওয়া পর্যন্ত আমি ফাইল চেষ্টা করে যেতে চাই))
নিম্নলিখিত কোডটি এমন কোনও উপায় দেখায় যাতে সম্ভাব্য আক্রমণকারী একটি ফাইল এবং ফাইল লেখার জন্য একটি পরীক্ষার মধ্যে এই পোস্টে প্রস্তাবিত হিসাবে একটি সিমিলিংক প্রবেশ করিয়ে দিতে পারে । কোডটি যদি পর্যাপ্ত পর্যায়ে অনুমতি নিয়ে চালানো হয় তবে এটি একটি স্বেচ্ছাসেবী ফাইল ওভাররাইট করতে পারে।
এই সমস্যা সমাধানের জন্য কোনো উপায় আছে কি?
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')