CodeShot

اعتبارسنجی سمت کلاینت در مقابل اعتبارسنجی سمت سرور

اعتبارسنجی سمت کلاینت در مرورگر یا اپلیکیشن اجرا می‌شود و برای تجربه کاربری سریع و بازخورد فوری مفید است، اما چون کاملاً تحت کنترل کاربر است هیچ تضمین امنیتی نمی‌دهد؛ اعتبارسنجی سمت سرور در محیطی است که مهاجم کنترلی روی آن ندارد و تنها منبع قابل‌اعتماد برای اطمینان از صحت و امنیت داده ورودی است.

ویژگیاعتبارسنجی سمت کلاینتاعتبارسنجی سمت سرور
قابل اعتماد برای امنیتخیربله
سرعت بازخورد به کاربرفورینیازمند رفت‌وبرگشت شبکه
قابل دور زدن توسط مهاجمبلهخیر

کِی از اعتبارسنجی سمت کلاینت استفاده کنیم؟

وقتی می‌خواهید تجربه کاربری بهتری بدهید، مثل نمایش فوری خطای «ایمیل نامعتبر» بدون رفت‌وبرگشت به سرور.

کِی از اعتبارسنجی سمت سرور استفاده کنیم؟

همیشه، بدون استثنا؛ هر داده‌ای که از کلاینت می‌آید باید دوباره در سرور اعتبارسنجی شود چون مهاجم می‌تواند مستقیماً درخواست HTTP بسازد و اعتبارسنجی کلاینت را دور بزند.

مثال اعتبارسنجی سمت کلاینت

// فقط بازخورد سریع در UI، قابل دور زدن
if (!email.includes("@")) {
  showError("ایمیل نامعتبر است");
}

مثال اعتبارسنجی سمت سرور

[HttpPost]
public IActionResult Register(RegisterDto dto)
{
    if (!IsValidEmail(dto.Email))
        return BadRequest("ایمیل نامعتبر است");
    // ادامه فقط پس از عبور از اعتبارسنجی سرور
}

اشتباه رایج

اشتباه رایج و بسیار خطرناک اعتماد کامل به اعتبارسنجی JavaScript سمت کلاینت و حذف یا سبک گرفتن اعتبارسنجی سرور است؛ مهاجم به‌راحتی می‌تواند با ابزارهایی مثل Postman یا Devtools مستقیم درخواست بسازد و کل منطق کلاینت را دور بزند.

جمع‌بندی

اعتبارسنجی سمت کلاینت فقط برای تجربه کاربری است، نه امنیت؛ تنها اعتبارسنجی سمت سرور قابل‌اعتماد است و هرگز نباید حذف شود.