SECURITY
پنج حفرهی امنیتی که در بیشتر سایتهای ایرانی دیدهایم
· ۶ دقیقه · تیم یازیاپ
آخرین بازبینی محتوایی:
خطاهای تکراری که با چند ساعت کار قابل رفعاند اما میتوانند کل کسبوکار را متوقف کنند.

۱. تزریق SQL
پاسخ کوتاه: پنج مشکل امنیتی که بیشتر از همه در سایتهای ایرانی دیدهایم عبارتاند از تزریق SQL، XSS در ورودیهای کاربر، کنترل دسترسی فقط سمت کلاینت، قرار گرفتن کلیدها و رمزها داخل کد، و بکاپی که هرگز تست بازیابی نشده است. هر پنج مورد با اصلاحهای نسبتاً ساده و کمهزینه قابل رفعاند. در ادامه هرکدام را با مثال و راهحل توضیح میدهیم.
ساختن کوئری با چسباندن ورودی کاربر، هنوز شایعترین اشتباه است. راهحل ساده است: همیشه از کوئری پارامتری استفاده کنید.
۲. XSS در ورودیهای کاربر
هر متنی که کاربر وارد میکند و بعد در صفحه نمایش داده میشود باید پاکسازی یا اسکیپ شود. بخش نظرات، پروفایل کاربر و فیلدهای جستجو رایجترین نقاط بروز XSS هستند.
هر متنی که کاربر وارد میکند و بعد در صفحه نمایش داده میشود، باید پاکسازی یا اسکیپ شود؛ بهویژه در بخش نظرات و پروفایل.
۳. کنترل دسترسی سمت کلاینت
مخفیکردن دکمه در رابط کاربری امنیت نیست؛ هر درخواست باید در سمت سرور مجوز کاربر را بررسی کند. اگر تغییر یک شناسه در آدرس، دادهی کاربر دیگری را برگرداند، کنترل دسترسی شما شکسته است.
مخفیکردن دکمهی «حذف» در رابط کاربری امنیت نیست. هر درخواست باید در سمت سرور مجوز کاربر را بررسی کند.
۴. کلیدها داخل کد
کلید API و رمز پایگاه داده باید فقط در متغیرهای محیطی سرور نگهداری شوند، نه در مخزن کد یا جاوااسکریپت مرورگر. هر کلیدی که یک بار در کد دیده شود، سوخته است و باید چرخانده شود.
کلید API و رمز پایگاه داده باید در متغیرهای محیطی سرور نگهداری شوند، نه در مخزن کد یا جاوااسکریپت سمت مرورگر.
۵. بکاپی که تست نشده
بکاپی که هرگز بازیابی نشده، بکاپ نیست. دستکم فصلی یک بار بازیابی کامل را روی یک محیط آزمایشی تمرین کنید.
بکاپی که هرگز بازیابی نشده، بکاپ نیست. حداقل فصلی یک بار بازیابی را تمرین کنید.
هر چند وقت یکبار باید بازیابی بکاپ را تست کرد؟
دستکم فصلی یک بار و حتماً پس از هر تغییر مهم در ساختار پایگاه داده؛ تست بازیابی باید روی محیطی جدا و با دادهی واقعی انجام شود.