java 更改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() 来进行路径标准化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值