2016-06-17 10 views
4

Метода set_UserActiveEnvironments() в HttpContextHelper.cs хранит несериализуемый объект как атрибут HttpSessionState на линии 47, который может привести к повреждению надежность приложенияHP Fortify: ASP.NET Плохих практики: несериализуемая объект, хранящаяся в сеансе

По умолчанию серверы ASP.NET хранят объект HttpSessionState, его атрибуты и любые объекты, которые они ссылаются в памяти. Эта модель ограничивает активное состояние сеанса до того, что может быть выполнено системной памятью одной машины. Чтобы расширить возможности, выходящие за рамки этих ограничений, серверы часто настраиваются на постоянную информацию о состоянии сеанса, которая также увеличивает емкость и позволяет репликацию на нескольких компьютерах для повышения общей производительности. Чтобы сохранить состояние сеанса, сервер должен сериализовать объект HttpSessionState, который требует, чтобы все объекты, хранящиеся в нем, были сериализованы.

Почему это показывает, что это уязвимость и как ее исправить?

ответ

1

Mohanraj, может быть, вы уже нашли решение, но ниже правдоподобное объяснение:

Есть некоторые ложноположительные, что HP Fortify указует, и это почему вам нужно проанализировать в каждом конкретном случае на каждом уязвимость, это указывает на вас, и именно поэтому у него есть список классификации, который вы анализируете, если найденная уязвимость является реальной угрозой или ложным положительным.

В данном конкретном случае, чтобы исправить уязвимость, вам просто нужно украсить класс, который вы пытаетесь передать/отправить в сеанс как [Serializable], что чрезвычайно рекомендуется при использовании сеанса для хранения данных внутри вашего приложения.

Отметить this article от Piet Obermeyer и Jonathan Hawkins, который объясняет, что лучше использовать сериализацию.

Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^