Небезопасная десериализация в C# (.net) с использованием NewtonsoftjsonC#

Место общения программистов C#
Anonymous
 Небезопасная десериализация в C# (.net) с использованием Newtonsoftjson

Сообщение Anonymous »

Я работаю над веб -API, который должен позвонить в сторонний веб -API для достижения некоторых функций. Этот дизайн API из сторонних сторон является своего рода «API» Бога, таким образом, что ему требуется общий тип объекта, позволяющий использовать этот отдельный API для многих различных функций со многими различными настройками (900+). Я настроил минимальный пример в первой коммит этого репо < /p>
(файл testRequests.http можно использовать в плагине HTTP -клиента Rider IDE, или вы можете просто скопировать его во что -то подобное, как почтальон)
, несмотря на то, что я установил typenamehandling.none , рецензенты безопасности в моей компании все еще думают, что наличие объекта тип В любом месте контракта API уязвим для небезопасной десериализации. Они еще не предоставили конкретную демонстрацию, показывающую успешную эксплойт, но они все еще думают, что нам нужно избежать каких -либо шансов на один. Поэтому они хотят, чтобы я указал строгие типы во всех контрактах API. DeserializationDemo.BaseSetting. Однако это требует кастинга до newtonsoft.json.linq.jobject . И это тот же тип, что и democontract1 , кажется, в любом случае де-эриализован, когда я проверяю с отладчиком. Так не было бы подозрительно к той же (гипотетической) уязвимости? /N8kxi.jpg " /> < /p>
Единственная альтернатива, которую я вижу, - избегать полиморфных типов все вместе. Чтобы сделать разные конечные точки, каждая со своим строгим типом, для каждой из 900+ функций. < /P>
Мои вопросы для сообщества: < /p>
  • Настройка typenamehandling.none < /strong> недостаточно, чтобы избежать небезопасной десериализации? быть Более строгие по разрешенным типам, но не приведет к де-эриализации newtonsoft.json.linq.jobject?


Подробнее здесь: https://stackoverflow.com/questions/782 ... onsoftjson

Вернуться в «C#»