IBM AppScanツールをVB.Netソースで実行しました。Path TraversalカテゴリのFile.Copyメソッドでセキュリティ問題が発生しています。IBM AppScan Security PathTraversalの問題(VB.NetのFile.Copyメソッド)
問題の詳細 - 脆弱性の種類 - PathTraversal この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