.NET Разработчик
6.66K subscribers
460 photos
4 videos
14 files
2.19K links
Дневник сертифицированного .NET разработчика. Заметки, советы, новости из мира .NET и C#.

Для связи: @SBenzenko

Поддержать канал:
- https://boosty.to/netdeveloperdiary
- https://patreon.com/user?u=52551826
- https://pay.cloudtips.ru/p/70df3b3b
Download Telegram
День 2524. #SystemDesign101
8 Распространённых Проблем Проектирования Систем и их Решения

1. Система с нагрузкой на чтение
- Используйте кэширование для ускорения операций чтения.

2. Большой трафик на запись
- Используйте асинхронные рабочие процессы для обработки операций записи.
- Используйте базы данных на основе LSM-деревьев.

3. Единая точка отказа
- Внедрите механизмы дублирования и отказоустойчивости для критически важных компонентов, таких как базы данных.

4. Поддержка доступности
- Используйте балансировку нагрузки, чтобы гарантировать, что запросы направляются к работоспособным экземплярам серверов.
- Используйте репликацию базы данных для повышения отказоустойчивости и доступности.

5. Высокие задержки
- Используйте сеть доставки контента (CDN) для уменьшения задержек.

6. Обработка больших файлов
- Используйте блочное и объектное хранилище для обработки больших файлов и сложных данных.

7. Мониторинг и уведомления
- Используйте централизованную систему логирования, например, стек ELK.

8. Медленные запросы к базе данных
- Используйте правильные индексы для оптимизации запросов.
- Используйте шардинг для горизонтального масштабирования базы данных.

Источник: https://bytebytego.com/guides/8-common-system-design-problems-and-solutions/
👍6👎1
День 2525. #ЗаметкиНаПолях
Разбираем Веб-Метки Файлов в .NET

Веб-метка (Mark of the Web, MOTW) — это функция безопасности Windows, которая защищает пользователей от потенциально опасных файлов, загружаемых из интернета. При загрузке файла Windows автоматически добавляет специальный метатег, указывающий на то, что файл получен из ненадёжного источника и может содержать вредоносный контент. При попытке открыть файл с MOTW Windows отображает предупреждение или запрашивает подтверждение перед открытием.

Проверка MOTW перед обработкой файлов может помочь защитить приложение от уязвимостей безопасности. Проверяя происхождение файла, вы можете предотвратить выполнение вредоносного кода или открытие файлов, которые могут скомпрометировать систему пользователя.

MOTW реализован как альтернативный поток данных (ADS), прикреплённый к файлу. ADS содержит информацию об источнике файла, включая URL, с которого он был загружен, и его зону безопасности:
[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://www.google.com/

ZoneId обозначает зону безопасности:
0 - Local Machine
1 - Intranet
2 - Trusted Sites
3 - Internet
4 - Untrusted

Мы можем использовать интерфейс IInternetSecurityManager для проверки файлов. Создадим консольное приложение.

Нам понадобятся:
- пакет Microsoft.Windows.CsWin32, который содержит генератор кода для работы с Win32;
- файл NativeMethods.txt в корне проекта с перечислением нужных нам API:
CoInternetCreateSecurityManager
MUTZ_NOSAVEDFILECHECK
MUTZ_REQUIRESAVEDFILECHECK

- вспомогательный enum:
enum UrlZone
{
Invalid = -1,
LocalMachine = 0,
Intranet = 1,
Trusted = 2,
Internet = 3,
Untrusted = 4,
}

Создадим статический класс для проверки MOTW:
public static class MOTW
{
[SupportedOSPlatform("windows")]
public static bool IsUntrusted(string path)
{
path = Path.GetFullPath(path);

var hr = PInvoke
.CoInternetCreateSecurityManager(
null,
out var secMgr,
0
);

if (hr.Failed || secMgr is null)
return true;

try
{
secMgr.MapUrlToZone(
path,
out var zone,
PInvoke.MUTZ_NOSAVEDFILECHECK);
if (zone >= (int)UrlZone.Internet)
return true;

secMgr.MapUrlToZone(
path,
out zone,
PInvoke.MUTZ_REQUIRESAVEDFILECHECK);
if (zone >= (int)UrlZone.Internet)
return true;

return false;
}
finally
{
Marshal.ReleaseComObject(secMgr);
}
}
}

Мы проверяем и сохраняемые, и уже сохранённые в доверенных зонах файлы.

Использование:
var path = @"C:\Users\user\Downloads\file.txt";
bool isUntrusted = MarkOfTheWeb.IsUntrusted(path);

Полный код, содержащий также методы установки и удаления ADS, см. в GitHub Meziantou.

Источник: https://www.meziantou.net/understanding-and-managing-mark-of-the-web-in-dotnet.htm
👍6