امنیت دادهی فرم: چه چیزی جمع میکنید و چقدر نگهش میدارید
امنترین داده، دادهای است که جمع نکردهاید. قبل از رمزنگاری و کنترل دسترسی، به این فکر کنید که چه چیزی واقعاً لازم دارید.
بحث امنیت فرم معمولاً از رمزنگاری شروع میشود، ولی مؤثرترین کار یک قدم قبلتر است.
۱. کمینهسازی: چه چیزی را اصلاً جمع نکنید
هر فیلدی که جمع میکنید، مسئولیت است. برای هر فیلد بپرسید: اگر این داده فردا درز کند، چه اتفاقی میافتد؟ و آیا واقعاً استفادهاش میکنم؟
مثالهای رایجِ جمعآوری بیدلیل:
- کد ملی، وقتی فقط میخواستید تکراری نباشد (شماره موبایل کافی بود).
- تاریخ تولد کامل، وقتی فقط ردهی سنی لازم داشتید.
- نشانی دقیق، وقتی فقط شهر کافی بود.
۲. چه چیزی خودکار جمع میشود
علاوه بر پاسخها، معمولاً IP، اطلاعات مرورگر و زمان هم ذخیره میشود. اینها برای ضداسپم مفیدند ولی در نظرسنجی ناشناس مشکلسازند: IP در یک سازمان میتواند به فرد برسد.
اگر نظرسنجیتان ناشناس است، جمعآوری IP را خاموش کنید و همین را به پاسخدهنده بگویید.
۳. چه کسی میتواند ببیند
دسترسی به پاسخها باید نقشمحور باشد. کسی که فقط باید گزارش تجمیعی ببیند، نباید به تکتک پاسخها دسترسی داشته باشد.
و دسترسیها را دورهای مرور کنید — معمولاً افراد به تیمهای دیگر میروند ولی دسترسیشان میماند.
۴. چقدر نگه دارید
دادهای که برای همیشه نگه داشته میشود، ریسکی است که مدام بزرگتر میشود. برای هر فرم یک دورهی نگهداری تعیین کنید و بعدش پاک کنید.
نکته: «پاککردن» باید واقعی باشد. حذف نرم (که فقط علامت میخورد) برای سطل بازیافت خوب است، ولی برای پایان دورهی نگهداری باید داده واقعاً برود.
۵. مسائل فنی پایه
| مورد | چرا |
|---|---|
| HTTPS | بدون آن، پاسخها در مسیر قابل خواندن و دستکاریاند |
| پاکسازی HTML ورودی | جلوگیری از تزریق اسکریپت در پنل مدیر |
| محدودیت نرخ | جلوگیری از استخراج انبوه و حمله |
| CSRF روی متدهای تغییردهنده | جلوگیری از عمل ناخواسته با نشست کاربر |
۶. به پاسخدهنده بگویید
یک جملهی ساده در ابتدای فرم که بگوید چه چیزی جمع میشود، چه کسی میبیند و چقدر نگه داشته میشود. این هم الزام قانونی در خیلی از حوزههاست و هم نرخ پاسخ را بالا میبرد، چون ابهام کم میشود.