インスタンスメソッド


lexicallyResolving(_:)


結果が語彙的に self 内に含まれることを確認しながら、self に対するサブパスを解決して新しい FilePath を作成します。


iOS 15.0+ iPadOS 15.0+ Mac Catalyst 15.0+ macOS 12.0+

tvOS 15.0+ visionOS 1.0+ watchOS 8.0+

func lexicallyResolving(_ subpath: FilePath) -> FilePath?




議論


subpath は解決の一部として語彙的に正規化されます (lexicallyNormalize を参照のこと)。つまり、含まれる . および .. コンポーネントはシンボリックリンクを解決せずに折りたたまれます。subpath 内のルートは無視されます。


結果が特殊なディレクトリ コンポーネント .. の使用によって self から "エスケープ" する場合は nil を返します。


これは、信頼できない subpath (サブパス) からの任意のパスの横断から保護するのに役立ちます。結果は、self 内に語彙的に含まれることが保証されます。この操作は、シンボリックリンクを解決するためにファイルシステムを参照しないため、self 内にネストされたエスケープするシンボリックリンクは、結果によって引き続きターゲットにされる可能性があります。


例えば:


  1. let staticContent: FilePath = "/var/www/my-website/static"
  2. let links: [FilePath] =
  3.    ["index.html", "/assets/main.css", "../../../../etc/passwd"]
  4. links.map { staticContent.lexicallyResolving($0) }
  5.    // ["/var/www/my-website/static/index.html",
  6.    // "/var/www/my-website/static/assets/main.css",
  7.    // nil]













トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ