اعتبارسنجی سمت کلاینت در مقابل اعتبارسنجی سمت سرور
اعتبارسنجی سمت کلاینت در مرورگر یا اپلیکیشن اجرا میشود و برای تجربه کاربری سریع و بازخورد فوری مفید است، اما چون کاملاً تحت کنترل کاربر است هیچ تضمین امنیتی نمیدهد؛ اعتبارسنجی سمت سرور در محیطی است که مهاجم کنترلی روی آن ندارد و تنها منبع قابلاعتماد برای اطمینان از صحت و امنیت داده ورودی است.
| ویژگی | اعتبارسنجی سمت کلاینت | اعتبارسنجی سمت سرور |
|---|---|---|
| قابل اعتماد برای امنیت | خیر | بله |
| سرعت بازخورد به کاربر | فوری | نیازمند رفتوبرگشت شبکه |
| قابل دور زدن توسط مهاجم | بله | خیر |
کِی از اعتبارسنجی سمت کلاینت استفاده کنیم؟
وقتی میخواهید تجربه کاربری بهتری بدهید، مثل نمایش فوری خطای «ایمیل نامعتبر» بدون رفتوبرگشت به سرور.
کِی از اعتبارسنجی سمت سرور استفاده کنیم؟
همیشه، بدون استثنا؛ هر دادهای که از کلاینت میآید باید دوباره در سرور اعتبارسنجی شود چون مهاجم میتواند مستقیماً درخواست HTTP بسازد و اعتبارسنجی کلاینت را دور بزند.
مثال اعتبارسنجی سمت کلاینت
// فقط بازخورد سریع در UI، قابل دور زدن
if (!email.includes("@")) {
showError("ایمیل نامعتبر است");
}
مثال اعتبارسنجی سمت سرور
[HttpPost]
public IActionResult Register(RegisterDto dto)
{
if (!IsValidEmail(dto.Email))
return BadRequest("ایمیل نامعتبر است");
// ادامه فقط پس از عبور از اعتبارسنجی سرور
}
اشتباه رایج
اشتباه رایج و بسیار خطرناک اعتماد کامل به اعتبارسنجی JavaScript سمت کلاینت و حذف یا سبک گرفتن اعتبارسنجی سرور است؛ مهاجم بهراحتی میتواند با ابزارهایی مثل Postman یا Devtools مستقیم درخواست بسازد و کل منطق کلاینت را دور بزند.
جمعبندی
اعتبارسنجی سمت کلاینت فقط برای تجربه کاربری است، نه امنیت؛ تنها اعتبارسنجی سمت سرور قابلاعتماد است و هرگز نباید حذف شود.
