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 در برنامههای تحت وب وجود دارد.
اگر یک ورودی کاربری غیرمعتمد داشته باشیم و آن را تأیید نکنیم، و با آن ورودی غیرمعتمد اجازه دهیم که Deserialize شود و از Byte Stream به Object تبدیل شود، در اینصورت مهاجم میتواند از این فرآیند سوء استفاده کرده و مقادیر ورودی خودش را وارد شبکه کند.
توصیه کلی درخصوص مقابله با خطر امنیتی Insecure Deserialization این است که مقادیر ورودی کاربری غیرمعتمد پذیرفته نشود. یا اینکه از تأیید کردن هرگونه مقادیر ورودی اطمینان حاصل گردد. در واقع این رویکرد برای مقابله با بسیاری از خطرات امنیتی کارآمد است.
در این ویدیوی آموزشی، جان واگنون ابعاد مختلف خطر امنیتی Insecure Deserialization و راههای مقابله با آن را مورد بحث قرار میدهد.