C#, наверное, не лучший выбор для приложения безопасности?

Я наткнулся на эту фразу в сети:

C# is probably not the best choice for a system-level application like this. I believe plain C++ is much better here as you will need to do lots of low-level API calls.

Я искал программы безопасности, созданные с использованием C#, такие как брандмауэр, родительский контроль, антивирус, антишпионское ПО и т. д.

Итак, правда ли, что C#, вероятно, не лучший выбор для приложения безопасности?

[править]
Я изучал программы безопасности C# и нашел 2 программы:
1) Keepass (http://keepass.info/compare.html) впечатляющий менеджер паролей, который переходит с C++ на C# !!!
2) Снова домой (http://www.codeplex.com/totty530) - сниффер пакетов, созданный с использованием C#
[/редактировать]

«Системный уровень»! = «Безопасность». Кроме того, вы можете писать небезопасные программы на любом языке.

Bombe 10.01.2009 05:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
2 798
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

Такие вещи, как брандмауэры, часто нуждаются в подключениях к средствам уровня ядра, которые (тривиально) не предоставляются управляемыми средами выполнения, такими как .NET. Вы можете перепрыгивать через обручи, чтобы использовать язык C# для подобных вещей, но тогда, что ж, вы будете прыгать через обручи.

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

C# подразумевает, что вы используете платформу .Net. Это добавляет в ваше приложение много кода, над которым у вас мало контроля. Если в этой версии .Net есть угроза безопасности, теперь она в вашем приложении.

То же самое может быть верно для любых дополнительных фреймворков, которые вы используете с C++, но также можно писать код C++ без каких-либо дополнительных фреймворков.

Однако ни один из способов не защищает от добавления небезопасного кода.

"Если в этой версии .Net есть угроза безопасности, теперь она в вашем приложении" ---> Я считаю, что это редкие версии .net с проблемами безопасности ... но такая возможность существует

Click Ok 10.01.2009 23:23

Это редко - но если бы я создавал что-то, что я продавал на рынке с его превосходной безопасностью, полагаться на сторонние библиотеки становится обузой. Независимо от того, кто их предоставил.

Rob Allen 11.01.2009 00:01

Может, стоит взглянуть на C++ / CLI. Он будет предлагать удобства .NET, но при этом обеспечит низкоуровневый доступ, который может вам понадобиться с C++.

Что ж, если вы работаете в службе безопасности, вам наверняка понадобится пистолет. C++ - лучшее оружие, чем C#, но будьте осторожны - с C++ намного проще прострелить себе ногу.

Дать согласие. Многие из функций, которые вы хотели бы вызвать, будут функциями, которые вам нужно будет вызывать с помощью P / Invoke из C#. Обратные вызовы из ОС в вашу программу C# тоже нехорошие, с такими вещами, как System.Runtime.InteropServices.CallingConvention.

Теперь, для таких вещей, как вышеупомянутые менеджеры паролей, это может не иметь большого значения. На самом деле это просто модная база данных с умными функциями импорта / экспорта / хранения / преобразования. Тем не менее, было бы полезно, если бы они могли взаимодействовать с другими программами. Вы просто не можете внедрить C# DLL в случайные процессы.

Приложения .Net "из коробки" полностью обратимы к читаемому коду. (Попробуйте: http://www.reflector.net/) Только комментарии в коде теряются! ;) Если имеет значение, могут ли люди легко заглянуть под капот вашего приложения. Вы будете в большей безопасности с C / C++, так как его немного сложнее реконструировать. Но обфускаторы или упаковщики .Net для вашего приложения C / C++ могут значительно усложнить реверс-инжиниринг в ваших приложениях. Следовательно, это никогда не бывает невозможным. Но будьте осторожны. Некоторые обфускаторы .Net плохо обрабатывают сервисы SOAP WSDL в вашем коде и вызывают ошибки, просто запутывая ваш код!

Другие вопросы по теме