تزریق لاگ (Log Injection): وقتی لاگها دروغ میگویند
تزریق لاگ (CWE-117) چیزی را نمیشکند؛ شاهد را خراب میکند. خط جعلی با CRLF، دنبالههای escape ترمینال، نمایشگرهایی که HTML رندر میکنند و کاراکترهای bidi، و اینکه چرا…
ادامه مطلب ›راهنماهای عملی لاگ و عیبیابی بکاند: لاگ ساختیافته، .NET و Serilog، OpenTelemetry، پروداکشن و امنیت — نوشتهٔ پیام ریاضیخواه.
تزریق لاگ (CWE-117) چیزی را نمیشکند؛ شاهد را خراب میکند. خط جعلی با CRLF، دنبالههای escape ترمینال، نمایشگرهایی که HTML رندر میکنند و کاراکترهای bidi، و اینکه چرا…
ادامه مطلب ›
یک ماجرای کامل از گزارش «پرداخت نشد» تا خط کد مقصر: چرا جستجوی اول دو ساعت طول کشید، چه لاگهایی باید وجود میداشت، و middleware خطا و ProblemDetails…
ادامه مطلب ›
تفاوت correlation id و trace_id استاندارد W3C، اینکه ASP.NET Core و HttpClient چه چیزی را خودکار منتقل میکنند، و کد عملی برای scope لاگ، صف پیام و کارهای…
ادامه مطلب ›
مدت نگهداری لاگ را بر اساس نوع لاگ تعیین کنید، نه اندازهٔ دیسک. جدول پیشنهادی برای debug، لاگ برنامه و ممیزی، روش تخمین حجم با یک مثال کارشده،…
ادامه مطلب ›
Splunk، ELK و OpenSearch، Grafana Loki، Seq و LogMug را از زاویهٔ معماری، زبان جستجو، مدل هزینه، بار عملیاتی و واقعیت خرید و تحریم برای تیمهای ایرانی مقایسه…
ادامه مطلب ›
برای لاگ متمرکز پورتال MVC، WebForms، WCF یا Windows Service، مهاجرت به .NET 8 لازم نیست. Serilog و Serilog.Sinks.Seq روی .NET Framework 4.6.2 به بالا، گرفتن همهٔ خطاها…
ادامه مطلب ›
راهاندازی تمیز Serilog 4 در ASP.NET Core: لاگر bootstrap برای خطاهای شروع، پیکربندی در appsettings.json، enricherهای محیط، لاگ یکخطی درخواستها و sinkهای Console، File و Seq.
ادامه مطلب ›
Error یعنی کسی باید کاری بکند؛ رمز اشتباه و ۴۰۴ Error نیستند. قاعدهٔ عملی هر سطح لاگ با مثال، هزینهٔ پنهان Debug در پروداکشن، و تنظیم سطح برای…
ادامه مطلب ›
لاگ متنی را باید با regex تجزیه کرد و با اولین تغییر پیام میشکند. لاگ ساختیافته چیست، چرا قالب پیام از string interpolation بهتر است، و چطور در…
ادامه مطلب ›
رمز، توکن، کارت، کد ملی و موبایل در لاگ چه میکنند و چطور بیرونشان نگه داریم: فهرست سفید فیلدها، destructuring در Serilog، ماسک، حذف سمت سرور، نگهداری و…
ادامه مطلب ›