美文网首页C++程序猿阵线联盟-汇总各类技术干货
用realpath对文件路径进行标准化处理

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

作者: 金琥 | 来源:发表于2018-03-31 21:20 被阅读23次

对代码进行静态检查时,出现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() 来进行路径标准化

相关文章

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

    对代码进行静态检查时,出现canonical filepath错误,这个错误表示文件路径未经标准化处理。攻击者会有...

  • python os.path模块

    os.path.abspath(path) #返回绝对路径,和realpath有区别,realpath是返回文件真...

  • Shell | 文件和目录操作

    一切皆文件 查看路径:pwd、realpath、basename、dirname 创建文件:mkdir 删除文件:...

  • 阅读`youtube-dl`源码笔记(1)

    获得一个文件的真实路径 os.path.realpath(os.path.abspath(__file__)));...

  • word转pdf

    1.功能实现 使用poi对进行word文件进行解析处理,使用aspose进行pdf转换 aspose下载路径:ht...

  • python 常用命令

    1.获取执行文件所在目录的绝对路径: os.path.dirname(os.path.realpath(__fil...

  • (二) node.js 常用基础API

    一、path 路径 用于处理文件路径和目录路径的模块 二、fs 文件系统 用于与文件系统进行交互的模块 写入文件操...

  • Linux下常用命令整理

    Linux下常用命令整理(持续更新...) [TOC] 1. realpath 用于获得文件的绝对路径 2. sl...

  • java 三种读取配置文件的方式

    方式一: 采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来。因为是用S...

  • 2022-05-11

    原始CEL,GSEXXX_RAW文件处理,RMA标准化MAS5标准化处理代码。

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/lisncftx.html