0

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
4

2 に答える 2

0

System.Configuration.ConfigurationManager.AppSettings は安全なソースと見なすことができます。調査結果を除外して、再度表示されないようにすることができます。

一方、このコードは、安全なコーディング手法が不十分であると見なすことができます。"System.Configuration.ConfigurationManager.AppSettings" を Web UI 入力のようなものに置き換えると、エンド ユーザーは "folder"、"drive"、"filename" の値を制御できるようになり、これは深刻なパス トラバーサルの問題になります。

于 2016-10-07T15:14:04.980 に答える