django 文件目录穿越防护

2016/5/31 posted in  python

文件目录穿越

在有input框需要输入文件目录时,由于客户可以输入 ../**.py类似的方式,可以查看到其他路径的文件,从而导致安全风险。

设置文件白名单的方式解决

    def check_allowed_filepath(file_path):
        allowed_filepath = ['F:/app/', 'D:/Python27/Lib/site-packages/django/']
        tag = False
        for tmp in allowed_filepath:
            if cmp(file_path[0:len(tmp)], tmp) == 0:
                tag = True
                break
        return tag

可以将某些文件输入到白名单中,然后在里面进行对比即可。

对于没有前端不允许输入绝对路径的,在进行路径的拼接时不要使用os.path.join,此时如果前端输入正确的绝对路径,则后面的路径将会成为拼接结果,建议使用字符串直接拼接。

在进行代码审查的时候,需要先行确认对服务器上文件进行操作的接口,并确认文件的路径或文件名是否来自于post或get参数。如果存在这样的参数,则需要检查参数是否根据需要进行相应的过滤和处理。