您好,欢迎来到知库网。
搜索
您的当前位置:首页用realpath对文件路径进行标准化处理

用realpath对文件路径进行标准化处理

来源:知库网

对代码进行静态检查时,出现canonical filepath错误,这个错误表示文件路径未经标准化处理。攻击者会有机会:
1)构造一个跨越目录限制的文件路径,例"../../../etc/passwd"或者"../../boot.ini"
2)构造一个指向系统关键文件的链接文件,例如 symlink("/etc/shadow","/tmp/log")
上述两种方式之一可以实现读取或修改系统重要数据文件,威胁系统安全

因此,不能直接拿用户的输入*input_path作为参数执行

linux下用realpath进行标准化处理

char path[PATH_MAX +1] = {0x00};
if( strlen(input_path) > PATH_MAX || NULL==realpath(input_path,path) )
    return;

win下可以用PathCanonicalize进行标准化,头文件Shlwapi.h,导入Shlwapi.lib库

char path[PATH_MAX +1] = {0x00};
char *lppath = path;
if( strlen(input_path) > PATH_MAX || FALSE ==  PathCanonicalize(lppath,input_path) )
    return;

有条件也可以使用微软推荐的PathCchCanonicalize() PathCchCanonicalizeEx() 来进行路径标准化

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

热门图文

Copyright © 2019-2025 zicool.com 版权所有 湘ICP备2023022495号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务