在web应用程序中,我从请求中获得一个路径,然后将其附加到(安全(基本路径中
web应用程序完全控制基本路径内的文件,但不允许突破。
我需要确保生成的路径(基本路径+获取路径(在基本路径内。
通过以下方式检查路径是否有效是否安全(并且足够(:
- 用CCD_ 2替换所有CCD_
- 被CCD_ 3分割
- 如果任何区块等于
..
,则将该路径标记为无效
如果路径无效,它只是被拒绝,否则我会创建或删除具有给定路径的文件(取决于操作…(
一些进一步的信息:
- 系统不提供良好的方式来规范路径
- 我不希望路径包含返回路径(
/../
(有任何正当理由。客户端需要在发送路径之前规范化路径
在我熟悉的Unix/Windows/MacOS系统中,我想不出有什么方法会让你所说的方法出错。也就是说,从根本上说,这是一种低可靠性的方法,完全容易受到将文件名转换为文件系统位置的软件中的模糊角落情况或更改的影响。我总是更喜欢使用实际的文件系统例程来完全解析路径,然后验证它是否存在于您想要的区域中。