VB.Net ソースで IBM AppScan ツールを実行しました。パス トラバーサル カテゴリの File.Copy メソッドで 1 つのセキュリティの問題が発生しています。
問題の詳細 - 脆弱性の種類 - パストラバーサル この API は、ディレクトリ、ファイル名、またはその両方を受け入れます。ユーザーが提供したデータを使用してファイル パスを作成すると、アクセスを許可しないディレクトリやファイル、または悪意のあるデータやコードを含む可能性のあるディレクトリやファイルを指すようにパスが操作される可能性があります。
この問題を解決するにはどうすればよいですか?
Imports System.Web.Security.AntiXss
Private Function ProcessFile() As Boolean
Dim drive As String = String.Empty
Dim folder As String = String.Empty
Dim filename As String = String.Empty
Dim sourcePath As String = String.Empty
Dim destinationPath As String = String.Empty
drive = AntiXssEncoder.XmlEncode(String.Format("{0}", System.Configuration.ConfigurationManager.AppSettings("Drive").ToString()))
folder = AntiXssEncoder.XmlEncode(String.Format("{0}", System.Configuration.ConfigurationManager.AppSettings("Folder").ToString()))
filename = AntiXssEncoder.XmlEncode(String.Format("{0}", System.Configuration.ConfigurationManager.AppSettings("File").ToString()))
sourcePath = Path.Combine(drive, folder, filename)
destinationPath = Path.Combine(drive, folder, "text2.txt")
Try
If sourcePath.IndexOfAny(Path.GetInvalidPathChars()) = -1 AndAlso destinationPath.IndexOfAny(Path.GetInvalidPathChars()) = -1 Then
File.Copy(sourcePath, destinationPath, True)
Return True
Else
Return False
End If
Catch ex As Exception
Return False
End Try
End Function