وقتی صحبت از ارسال و دریافت دیتا میشود یکی از مواردی از همون ابتدا به ذهن میرسه انتخاب
Serializer
درست هست؛ اگر توسعه دهنده وب باشید قطعا همون اول یاد
JSON
میوفتید (امن و مناسب) اما گزینههای دیگری هم هست که توی پروژههای مختلف استفاده میشه مثل
YAML
که بیشتر دوستان DevOps کار یا برنامهنویسهای اون سمت باهاش کار میکنند؛ و یا مثلا:
Pickle
که توی AI و DataScience خیلی طرفدار داره متاسفانه (استفادهاش توی تیم من ممنوع هست)
مشکل اصلی که با YAML, Pickle وجود داره بخصوص Pickle امنیت هست.
بصورت دیفالت YAML, Pickle وقتی باهاش
Serialized Data
رو باز میکنید اگر حاوی دستورات سیستمی هم باشه اونهارو بصورت کامل اجرا میکنه برای همین هست که توی PyYaml وقتی کدی قرار هست برای Production استفاده بشه باید از
yaml.safe_load
استفاده کنید.
اما مشکل اینجاس که safe_load کلاسهای کاستوم رو نمیشناسه راه حل :
تصویر پیوست شده؛ اگر قرار هست از YAML توی پروژه استفاده کنید حتما از safe_loader استفاده کنید load, full_loader , ... امن نیست و این مورد یک باگ کاملا شناخته شده هست.
GitHub issues
@PyHints