رفتن به محتوای اصلی
برنامه‌سازی پیشرفته با پایتون درس‌نامهٔ آزاد
مفهوم متوسط ۸ دقیقه

JSON و CSV و بار امن

سریال‌سازی امن: json، csv، اعتبارسنجی ورودی و هشدار جدی pickle.

import json

raw = '{"host": "localhost", "port": 8000}'
config = json.loads(raw)
assert isinstance(config.get("port"), int)  # اعتبارسنجی حداقلی

دادهٔ خارجی (فایل کاربر، پاسخ شبکه) دشمنِ بالقوه است: نوع را چک کن، بازه را چک کن، پیش‌فرض امن بگذار. و قانون آهنی: pickle.loads روی بایتِ نامطمئن = اجرای کدِ مهاجم. pickle فقط برای داده‌ای که خودت نوشته‌ای و به مسیرش اعتماد داری؛ بقیهٔ دنیا JSON یا CSV.

برداشت نادرست رایج

اشتباه رایج

چون pickle استانداردِ پایتون است، پس برای ذخیرهٔ ورودی کاربر هم مناسب است.

تصحیح

استانداردبودن ربطی به امنیت ندارد. مستندات رسمی هم هشدار می‌دهد: unpickling دادهٔ نامطمئن می‌تواند کد دلخواه اجرا کند.

پیش‌نیازها

مطالب مرتبط

از همین بخش و با برچسب‌های مشترک

این مطلب را خواندید؟ آن را علامت بزنید تا پیشرفت شما روی همین دستگاه ذخیره شود.

وضعیت پیشرفت برای JSON و CSV و بار امن