在编程中,路径不规范化(允许用户传入相对路径),可能造成文件的泄露。防止这样的攻击可以有三种方法:
1 在linux下设置合适的用户权限。 2 对路径进行判定
import os
#判定法
def secu_scan_path(input_path,prefix):
abs_path = os.path.abspath(input_path)
file_dir = os.path.dirname(abs_path)
print(abs_path)
if not file_dir.startswith(prefix) :
return False
return True
input_path = "../../../../../../../logconfig1.txt"
result_path = os.path.join("D:\docker",input_path)
print(secu_scan_path(result_path,"D:\docker"))
#或者直接拼凑路径
file_name = os.path.basename(input_path)
result_path = os.path.join("D:\docker",file_name)
print(result_path)
用./xxx.py
来进行open
操作是很危险的。因为相对路径总不那么可靠。
所以我们可以获取当前运行脚本的绝对路径:
import os,sys
dirname, filename = os.path.split(os.path.abspath(sys.argv[0]))
os模块的常用功能
http://wangwei007.blog.51cto.com/68019/1217082