دریافت ویدیو
در حال بارگذاری...

خطر امنیتی Insecure Deserialization چیست و چگونه باید با آن مقابله کرد

مفهوم Serialization و Deserialization

Serialization به معنای این است ‫که یک Object به ‫یک Byte Stream  ‫یا یک Stream یا یک Stream از Byteها تبدیل شود. ‫به این منظور که بتواند از فرمت مناسبی برای حرکت، مثلا یک شبکه‌ی HTTP، برخوردار باشد. ‫یا اینکه برای مثال دارای قابلیت ذخیره شدن در ‫دیتابیس یا حافظه را دارا باشد.

از فرایند Serialization استفاده می‌شود تا بتوان State آن Object ‫موردنظر را ذخیره یا ماندگار کرد. بدین جهت که هنگام ارسال آن به جایی دیگر، State ماندگاری همچنان برقرار باشد.‫پس وقتی یک Object به ‫فرمت Byte Stream تبدیل شود، به این ‫فرآیند Serialization گفته می‌شود.

همانند اکثر کارهای دیگر Networking، ‫وقتی کاری از جانب یک طرف صورت می‌گیرد، ‫طرف دریافت‌کننده نیز باید ‫همان‌کارها را Undo کند.‫پس وقتی یک Byte Stream را برمی‌داریم ‫و آن را دوباره به شکل آن Object درمی‌آوریم ‫به فرآیند بازگرداندن آن از Byte Stream
‫به Object، فرآیند Deserialization گفته ‫می‌شود.

بسیاری از زبان‌های برنامه‌نویسی امروزه، ‫از این فرآیند استفاده کرده و یا توانایی آن ‫را دارند که به دلایلی که گفته شد و دلایل
‫بسیار دیگری، Objectها را Serialize کنند. ‫پس این مفهوم Serialization ‫و Deserialization در برنامه‌های ‫تحت وب وجود دارد.

فرایند  Deserialization چگونه می‌تواند مشکل‌ساز باشد؟

اگر یک ورودی کاربری غیرمعتمد ‫داشته باشیم و آن را تأیید نکنیم، و با آن ورودی غیرمعتمد اجازه دهیم که ‫Deserialize شود و از Byte Stream ‫به Object تبدیل شود، ‫در اینصورت مهاجم می‌تواند از این ‫فرآیند سوء استفاده کرده و مقادیر ورودی ‫خودش را وارد شبکه کند.

راه‌های مقابله با خطر امنیتی Insecure Deserialization

توصیه کلی درخصوص مقابله با خطر امنیتی Insecure Deserialization  این است که مقادیر ‫ورودی کاربری غیرمعتمد پذیرفته نشود. یا اینکه از تأیید کردن هرگونه مقادیر ورودی ‫اطمینان حاصل گردد. ‫در واقع این رویکرد برای مقابله با بسیاری از خطرات امنیتی کارآمد است.

در این ویدیوی آموزشی، جان واگنون ابعاد مختلف خطر امنیتی Insecure Deserialization و راه‌های مقابله با آن را مورد بحث قرار می‌دهد.

 

ویدیوهای مرتبط