В мире C++ существует множество способов сделать годную для использования уязвимость: переполнение буфера, небезопасная обработка жала, различные арифметические приемы, printf проблемы, строки, не заканчивающиеся '\0' и многое другое. Несмотря на большинство этих проблем были решены в Java, существуют некоторые вещи говорить о. Но есть ли какой-либо список типичных уязвимостей кодирования C#-specific? (и не связанный с самой платформой.NET)
Вот несколько проблем, с которыми вы можете столкнуться:
Не совсем. Я собираюсь сделать здесь смелое заявление:
Не существует такой вещи, как «специфическая для C # уязвимость программирования, не связанная с платформой .net».
Программа, написанная на C ++, компилируется непосредственно в исполняемый файл машины, поэтому компилятор языка несет прямую ответственность за создание исполняемого кода, следовательно, C ++ может легко «создать уязвимость, которую можно использовать».
Однако программа, написанная на C #, компилируется в IL, который является единственным языком, с которым работает платформа .net. Среда .net создает исполняемый файл машины на основе этого кода IL. Все, что может делать C #, - это просто подмножество того, на что способна платформа .net. Вот как я могу сделать свое смелое заявление. Все, что вы могли бы сделать с C # и создать уязвимость в коде, будет одной из следующих:
1) Ошибка в платформе .net
или
{{1} } 2) Выполнение кода за пределами платформы .net
Таким образом, то, как ваш вопрос в настоящее время сформулирован, заставляет меня думать, что либо вы не полностью осознаёте огромные различия между «написанием кода на C» и «написанием кода для платформа .net "или я неправильно понимаю ваш вопрос. Возможно и то, и другое! 8)
Надеюсь, это поможет!
Вероятно, нет из вашего списка проблем, но с этим следует быть осторожным: void *
C# основан на .NET, а .NET должен быть безопасным для типов, что означает, что ничего из вашего списка ужасов не применимо к C# или любому другому языку .NET.
Но опять же, в C# есть ключевое слово unsafe
, и после этого все ставки сделаны.
Он позволяет использовать настоящие указатели и все, что с ними связано.