Назвать код C++ из приложения C# или портировать его?

tl; dr Это нарушение безопасности высокого уровня

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

RFC6819 - Модель угроз OAuth 2.0 и соображения безопасности в разделе Угроза: получение клиентских секретов освещается ниже,

В результате это будет следующее:

  • Проверка подлинности клиента для доступа к серверу авторизации может быть обойдена.
  • Украденные токены обновления или «коды» авторизации могут быть воспроизведены
blockquote>

Если вы сравниваете себя с общедоступным клиентом, который не содержит учетные данные клиента, специальный вектор атаки открывается через [113 ] предоставление учетных данных клиента . Таким образом, даже если токен обновления или код авторизации безопасен, злоумышленник может использовать указанное разрешение для получения токенов доступа. Поэтому никогда не раскрывайте секрет клиента.

5
задан Jon Cage 8 May 2009 в 15:20
поделиться

4 ответа

Я попытался связать c-dll из кода c # с довольно хорошими результатами, хотя у меня были некоторые проблемы с передачей данных между средами. В противном случае процедура довольно проста. Чем больше данных вы отправляете взад и вперед (как по количеству, так и по частоте), тем медленнее будет работать ваша программа, но вы, вероятно, уже поняли это самостоятельно.

Главным недостатком было поддержание связующего кода c # -c (код интерфейса). ) каждый раз что-то менялось или кто-то обнаруживал ошибку.

Вот небольшой код, с которого можно начать:

using System.Runtime.InteropServices;
    class myDllCaller {

       //call to function in the dll returning an int
      [DllImport("MyFavorite.dll")]
      private static extern int dllFunction(//list of parameters to function);

    public static void Main() {
    int rerult = dllFunction();

    }
}
4
ответ дан 14 December 2019 в 04:47
поделиться

Если ссылки на Mitch версии C # не подходят для ваших целей, вы можете использовать управляемую оболочку C ++, которая может использовать повторно, и оборачивать код C, который у вас есть, но все же будет виден вашим управляемым приложениям как собственная сборка .Net. В прошлом я использовал этот подход для использования C API библиотеки, у которой не было собственного нативного .Net API, и обнаружил, что данные между ними относительно безболезненны.

2
ответ дан 14 December 2019 в 04:47
поделиться

... Или вы можете загрузить уже реализованный код в C # из здесь .

1
ответ дан 14 December 2019 в 04:47
поделиться

Это зависит от ваших целей.

Если бы у вас было работающее приложение, я бы взвесил затраты и преимущества обоих подходов и выбрал бы наиболее экономически эффективный.

Если это улучшит ваш C #, то непременно переписайте C.

1
ответ дан 14 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

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