Как стать автором
Обновить

Комментарии 28

Больше похоже на вступление к статье, чем на саму статью.

НЛО прилетело и опубликовало эту надпись здесь
Мне кажется основной посыл не малое количество уязвимостей в C# проектах, а их плохое оформление. То есть одно дело когда уязвимостей в базе мало, но те, что есть оформлено хорошо, другое дело когда уязвимостей в базе мало, а те что есть оформлены абы как.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
После такой статьи от души радуешся что ты c# програмист.

Или огорчаешься, потому что мало серьёзных проектов с открытым кодом на C#.

CVE-2017-15280 — это давно уже не уязвимость. Потому что XXE через XmlTextReader с настройками по умолчанию закрыли в .NET 4.5.2, за три года до 2017го...

Эмм… Может на C# тупо мало софта и не в чем искать уязвимости? На типичном не-Windows компьютере (включая мобилы-планшеты) софта на шарпе примерно ноль.


Наверняка в программах на D, Cobol, SmallTalk, Haskell тоже мало CVE.

На C# мало софта? Хороший вброс

Касательно уязвимостей.
Им в дотнете взяться особо неоткуда. Управляемый код со строгой статической типизацией перекрывает большинство классических проблем, так что выстрелить себе в ногу намного сложнее. Из потенциально дырявых технологий могу назвать разве что Remoting, которым уже лет 10 как не пользуются.
Остаются в основном штуки связанные с вебом, но и там можно поймать разве что XSS — SQL-инъеккциям тоже неоткуда взяться, ибо все используют LINQ.

НЛО прилетело и опубликовало эту надпись здесь

Это Entity Framework-ом не стоит особо увлекаться, ибо тормозит из-за своего change-tracking-а. Нормальные реализации типа linq2db (не путать с linq2sql) по производительности сравнимы с ручным написанием запросов.


Это касательно доступа к БД. Манипуляции же с объектами внутри процесса, там да, можно использованием LINQ себе производительность хорошо так просадить. В особо терминальных случаях его запускают поверх байтмассивов, а потом удивляются, чому оно работает на 4-5 порядков медленнее вручную написанного цикла.

НЛО прилетело и опубликовало эту надпись здесь

Потому что мощная и удобная штука.

НЛО прилетело и опубликовало эту надпись здесь

Вот именно потому, что субъективная, вы и не понимаете.


(правда, надо заметить, что статическая типизация и AST — вещи все-таки объективные, ну не суть)

НЛО прилетело и опубликовало эту надпись здесь

Ну так любят и не за производительность (хотя в умелых руках производительность LINQ, как бы бессмысленно эта фраза не звучала, достаточна).

НЛО прилетело и опубликовало эту надпись здесь
На вкус и цвет, все фломастеры разные.

Ну так это и есть субъективная характеристика.

А чем linq вам не нравится? Не сложные запросы на нем можно писать и очень даже удобно, а для более сложных запросов можно написать sql-запрос

Microsoft C# — очень хороший пример качественной реализации C# и IL транскомпиляции вообще. Безопасность типов реализуется так, что в принципе, ошибки не являются критическими.
НЛО прилетело и опубликовало эту надпись здесь
С появлением .net core и других проектов в OSS это может измениться.
Мне кажется это от того, что там вообще плохо с написанием велосипедов. В смысле, фреймворк покрывает 95% нужд, остальное подпирается костылем под конкретную задачу и… и никаких уязвимостей. Ну и OSS такое же — небольшие костыли. Во что вкладываться то?

Совсем другое дело на JS — есть голый язык, и на него как только не изгаляются для прикручивания лучших практик. Тут без OSS вообще никак.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий