tl; dr Это нарушение безопасности высокого уровня
Если вы следили за недавними событиями, такими как нарушение Facebook , то мы говорим о возможности подобной угрозы , Вы просто приветствуете злоумышленников для получения токенов доступа, которые они могут использовать для чего угодно. Ваши защищенные токеном OAuth конечные точки теперь скомпрометированы.
RFC6819 - Модель угроз OAuth 2.0 и соображения безопасности в разделе Угроза: получение клиентских секретов освещается ниже,
В результате это будет следующее:
blockquote>
- Проверка подлинности клиента для доступа к серверу авторизации может быть обойдена.
- Украденные токены обновления или «коды» авторизации могут быть воспроизведены
Если вы сравниваете себя с общедоступным клиентом, который не содержит учетные данные клиента, специальный вектор атаки открывается через [113 ] предоставление учетных данных клиента . Таким образом, даже если токен обновления или код авторизации безопасен, злоумышленник может использовать указанное разрешение для получения токенов доступа. Поэтому никогда не раскрывайте секрет клиента.
Я попытался связать 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();
}
}
Если ссылки на Mitch версии C # не подходят для ваших целей, вы можете использовать управляемую оболочку C ++, которая может использовать повторно, и оборачивать код C, который у вас есть, но все же будет виден вашим управляемым приложениям как собственная сборка .Net. В прошлом я использовал этот подход для использования C API библиотеки, у которой не было собственного нативного .Net API, и обнаружил, что данные между ними относительно безболезненны.
... Или вы можете загрузить уже реализованный код в C # из здесь .
Это зависит от ваших целей.
Если бы у вас было работающее приложение, я бы взвесил затраты и преимущества обоих подходов и выбрал бы наиболее экономически эффективный.
Если это улучшит ваш C #, то непременно переписайте C.