lakshjoshi Ответов: 1

Как преодолеть ошибки манипулирования путями от HP fortify VB.NET код


Всем привет

я написал код в vb.net
Public Function GetFileContentvalue(ByVal Path As String) As String

           Dim FileStream As New StreamReader(Path)<---
           Dim sFileText As String = String.Empty

           Try
               'Read file and load all its content to the string
               sFileText = FileStream.ReadToEnd()
               Return sFileText

           Catch ex As Exception
               message.show("File exception")
           Finally
               If FileStream IsNot Nothing Then
                   FileStream.Close()
               End If
           End Try

           Return sFileText
       End Function


-вызывающая ценность

sconfigText = GetFileContent(sFilePath)

'********************************************************
когда я сканирую свой код отверстия HP fortify scanner, показывающий ошибку манипуляции путями.где я указал выше.


пожалуйста, может ли кто-нибудь подсказать мне, как преодолеть эту проблему с помощью результатов сканирования hp fortify.

заранее спасибо.

Что я уже пробовал:

я попытался изменить код, но я не могу преодолеть эту ошибку манипуляции путем

Ralf Meier

Что такое "сканер HP fortify" ?
Какое значение содержит слово "путь"?
А как насчет документации вашей ?Сканер? ...?

lakshjoshi

i.О компании HP Foritfy SCA

Fortify Static Code Analyzer-это набор анализаторов безопасности программного обеспечения, которые ищут нарушения специфичных для безопасности правил и рекомендаций кодирования. Анализаторы предоставляют богатые данные, которые точно определяют и расставляют приоритеты нарушений в исходном коде программного обеспечения

2.путь, по которому читается текстовый файл forex:D:\config.txt

3.рискованное управление ресурсами - CWE ID 022
Неправильное ограничение пути к ограниченному каталогу ("обход пути"). CWE-22 утверждает: "программное обеспечение использует внешние входные данные для построения пути, предназначенного для идентификации файла или каталога, расположенного под ограниченным родительским каталогом, но программное обеспечение должным образом не нейтрализует специальные элементы внутри пути, которые могут привести к разрешению пути в местоположение, находящееся за пределами ограниченного каталога".
Укрепить Вопросов Папке Категории Аудит Операции С Контурами 37 0 Критические 9 0 Высокий 9 0 Средний 0 Низкий 9 10 0

дайте мне знать ваше предложение..спасибо

Richard Deeming

Это наводит на мысль, что код, который вызывает ваш GetFileContentvalue функция строит путь на основе значений, введенных пользователем, без надлежащей проверки этих значений. Мы не можем сказать вам, как исправить этот код, потому что мы его не видим.

Нажмите кнопку "улучшить вопрос" и добавьте вызывающий код к вашему вопросу.

NB: Вы можете значительно упростить свою функцию, используя Файл.ReadAllText[^]:

Public Function GetFileContentvalue(ByVal Path As String) As String
    Try
        Return File.ReadAllText(Path)
    Catch ex As Exception
        message.show("File exception")
        Return String.Empty
    End Try
End Function

Bryian Tan

откуда этот путь? Пользовательский ввод? конфигурационный файл?

lakshjoshi

конфигурационный файл.

когда я использовал приведенный выше код, предложенный Ричардом ... он работает нормально.
теперь HP fortify не сообщает об ошибке манипулирования путями.
спасибо за помощь

lakshjoshi

Отлично! ..
это решение работает ... большое вам спасибо.

1 Ответов

Рейтинг:
0

Member 14575213

я использую ту же ошибку с Fortify scan, но использую другой код .

общественного недействительными fileupload с(байт[] fileToUpload, строковый именем, строка имя пользователя, строка имя пользователя, строка электронной почты)
{
строковая папка = ConfigurationManager.Параметр appsettings.Вам("IbaagDirectoryPath");
если (системы.ИО.Путь.IsPathRooted(имя файла))
{
throw new ArgumentNullException("ошибка");
}
строку путь к файлу = система.ИО.Путь.Объединить(папка, имя файла);
System.IO.MemoryStream ms = новый System.IO.MemoryStream(fileToUpload);
пробовать
{
используя (системы.ИО.Система файлового потока ФС=.ИО.Файл.Создать(путь к файлу))
{
//Сохраните файл из входного потока.
использование (System.IO.Stream stream = ms)
{
byte[] buffer = новый байт[4096];

int bytesRead;

while ((bytesRead = stream.Read(buffer, 0, buffer.Длина)) != 0)
{
fs.Write(buffer, 0, bytesRead);
}

течение.Промывать();
//течение.Закрывать();
}

}
}
наконец
{
if (ms != null)
ms = null;

}


я получаю проблему Манупуляции пути в строке, где написан следующий код, пожалуйста, предложите решение .
строку путь к файлу = система.ИО.Путь.Объединить(папка, имя файла);