Там какие-либо проблемы безопасности оставляют файлы отладки PDB на живых серверах?

$move = "/Users/George/Desktop/uploads/".[110] 

Это один.

move_uploaded_file([110] 

Это один.

[111]

Это два.

Проверьте, доступен ли для записи каталог uploads

Это три.

Возвращаемые значения

Возвращает TRUE в случае успеха.

Если имя файла не является допустимым загружаемым файлом, никаких действий не произойдет, и move_uploaded_file () вернет FALSE.

Если имя файла является допустимым загружаемым файлом, но не может быть перемещено по какой-либо причине, никаких действий не произойдет, и move_uploaded_file () вернет FALSE. Дополнительно будет выдано предупреждение.

Посмотрите на возвращаемое значение функции.

Вот и все.

FILES['file']['tmp_name'], $move);

Это два.

Проверьте, доступен ли для записи каталог uploads

Это три.

Возвращаемые значения

Возвращает TRUE в случае успеха.

Если имя файла не является допустимым загружаемым файлом, никаких действий не произойдет, и move_uploaded_file () вернет FALSE.

Если имя файла является допустимым загружаемым файлом, но не может быть перемещено по какой-либо причине, никаких действий не произойдет, и move_uploaded_file () вернет FALSE. Дополнительно будет выдано предупреждение.

Посмотрите на возвращаемое значение функции.

Вот и все.

FILES['file']['name'];

Это один.

move_uploaded_file([110] 

Это один.

[111]

Это два.

Проверьте, доступен ли для записи каталог uploads

Это три.

Возвращаемые значения

Возвращает TRUE в случае успеха.

Если имя файла не является допустимым загружаемым файлом, никаких действий не произойдет, и move_uploaded_file () вернет FALSE.

Если имя файла является допустимым загружаемым файлом, но не может быть перемещено по какой-либо причине, никаких действий не произойдет, и move_uploaded_file () вернет FALSE. Дополнительно будет выдано предупреждение.

Посмотрите на возвращаемое значение функции.

Вот и все.

FILES['file']['tmp_name'], $move);

Это два.

Проверьте, доступен ли для записи каталог uploads

Это три.

Возвращаемые значения

Возвращает TRUE в случае успеха.

Если имя файла не является допустимым загружаемым файлом, никаких действий не произойдет, и move_uploaded_file () вернет FALSE.

Если имя файла является допустимым загружаемым файлом, но не может быть перемещено по какой-либо причине, никаких действий не произойдет, и move_uploaded_file () вернет FALSE. Дополнительно будет выдано предупреждение.

Посмотрите на возвращаемое значение функции.

Вот и все.

24
задан SamB 14 April 2010 в 00:30
поделиться

7 ответов

Хм - я бы полагался на сторону предосторожности по этому поводу. Я думаю, вам нужны PDB, но не на производственных серверах. Кроме того, у вас должна быть отключена отладка на любой работающей системе. Отладка неприятна, и вы просто не хотите ее, когда она вам не нужна.

От Скотт Гатри :

  1. Компиляция страниц ASP.NET занимает больше времени (поскольку некоторые пакетные оптимизации отключены)
  2. Код может выполняться медленнее (поскольку включены некоторые дополнительные пути отладки)
  3. В приложении во время выполнения используется гораздо больше памяти
  4. Сценарии и изображения, загруженные из обработчика WebResources.axd, не кэшируются

Установите в machine.config для развертывания retail = true:

<configuration>
    <system.web>
          <deployment retail="true"/>
    </system.web>
</configuration>

Это переопределит настройки отладки, ошибок и трассировки, что предотвратит раскрытие ошибок за пределами самого компьютера.

Итак, теперь, когда у вас отключена отладка, нет ошибок или трассировки, зачем вам развертывать PDB на рабочем сервере? Храните их где-нибудь еще, возможно, даже на своем сервере разработки. Сценарий продвижения кода из Dev в Production может специально исключать PDB, но заархивировать их, чтобы они были доступны, если вам когда-нибудь понадобится выполнить отладку в производстве.

-4
ответ дан 29 November 2019 в 00:04
поделиться

Если сервер IIS, нет. Эти файлы не будут опубликованы, если они будут храниться в нужных местах (веб-сайт \ bin). Иногда я находил промежуточные файлы (каталог obj) на веб-серверах - это, кажется, любимый способ случайно опубликовать двоичные файлы. Любые случаи, когда ваши pdbs видны, ваши dll также видны, что еще хуже.

Как отмечает activa, трассировка стека очень полезна для хакера с номерами строк или без них. Держите его закрытым.

Я предполагаю, что любая другая программа, которую вы можете запустить на реальном сервере - службы и т. Д., - вообще не доступна для публичного доступа.

3
ответ дан 29 November 2019 в 00:04
поделиться

Если ваша система не защищена с помощью PDB, она, вероятно, небезопасна без них. Очевидно, это зависит от того, насколько важны для вас лучшие отчеты об ошибках. Лично я это очень ценю, поэтому стараюсь развернуть PDB.

18
ответ дан 29 November 2019 в 00:04
поделиться

Единственная проблема, с которой вы можете столкнуться при публикации файлов .PDB на своем веб-сайте, - это когда возникает исключение, и вы забыли установить свойство CustomErrors в web.config. Трассировка стека будет отображаться с именами файлов и номерами строк, что может быть проблемой безопасности.

Я не думаю, что есть какие-либо другие риски.

6
ответ дан 29 November 2019 в 00:04
поделиться

Обычно, когда дело доходит до ковыряния, PDB находятся чуть ниже исходного кода, и ASP.NET/IIS не препятствует их загрузке.

Конечно, людям придется угадывать название сборки, а это маловероятно, но зачем рисковать?

-3
ответ дан 29 November 2019 в 00:04
поделиться

Если вы представляете конечному пользователю исключения, которые не выполняются (он же «Желтый экран смерти»), то это может создать риск того, что злоумышленник сможет лучше понять вашу систему.

Одно из них. возможные решения - иметь политику обработки исключений , которая:

  1. Регистрирует все исключения с исходной трассировкой стека, дополнительной информацией и уникальным идентификатором исключения (Guid).
  2. Заменяет запущенное исключение оболочкой который содержит только идентификатор исключения (для справки и обратной связи) и очищенное сообщение (например, без строк подключения) с удаленной информацией трассировки стека.

Примеры блоков обработки исключений с открытым исходным кодом в .NET:

2
ответ дан 29 November 2019 в 00:04
поделиться

I think a fair argument is also that not leaving the PDBs on the live servers is a risk. In the case where production is crashing and the problems can't be reproduced on dev or UAT, it's much more time consuming (and perhaps impossible) to diagnose where the error is occurring.

At the very least, the PDBs that match the deployed DLLs should be in a ZIP file on the production server somewhere. They should be easily located by people other than yourself in case you aren't around to assist.

Also see PDB Files: What Every Developer Must Know by John Robbins.

8
ответ дан 29 November 2019 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: