python笔记:路径攻击防范,当前路径,os模块 ##防止路径攻击 在编程中,路径不规范化(允许用户传入相对路径),可能造成文件的泄露。防止这样的攻击可以有三种方法: 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])) # 或者 # dirname = os.path.split(os.path.realpath(__file__))[0] ``` ##附带: os模块的常用功能 http://wangwei007.blog.51cto.com/68019/1217082 来自 大脸猪 写于 2016-10-26 14:30 -- 更新于2020-10-19 13:06 -- 0 条评论