امنیت پیشرفته (Secure Identify)
جلوگیری از جعل هویت کاربران در SDK فیدگاه با استفاده از امضای دیجیتال HMAC-SHA256.
بهطور پیشفرض، زمانی که متد Fidegah.identify را در فرانتاند صدا میزنید، اطلاعات کاربر مستقیماً از مرورگر به سرورهای فیدگاه ارسال میشود. از آنجا که کدهای فرانتاند در مرورگر کاربران قابل مشاهده و دستکاری هستند، یک کاربر مخرب میتواند با تغییر شناسه (id) در کنسول مرورگر، هویت کاربر دیگری را جعل کرده و از طرف او بازخورد ثبت کند یا رأی بدهد.
برای جلوگیری از این نوع حملات (User Impersonation)، فیدگاه قابلیت امنیت پیشرفته (Secure Identify) را ارائه میدهد. این مکانیزم با الگوریتم HMAC-SHA256 تضمین میکند که تمام درخواستهای احراز هویت فرانتاند، پیش از رسیدن به سرورهای فیدگاه، از سرور شما امضا و تأیید شدهاند.
جریان کاری
فعالسازی امنیت پیشرفته شامل ۳ مرحله است:
تولید امضا در سرور شما با استفاده از شناسه کاربر و کلید مخفی (SecretKey)، یک هش HMAC-SHA256 تولید میکنید.
ارسال توکن به فرانتاند توکن تولیدشده را به همراه مشخصات کاربر به متد
Fidegah.identify پاس میدهید.
تأیید توسط سرور فیدگاه فیدگاه امضا را با کلید مخفی شما بازتولید و بررسی
میکند؛ اگر معتبر بود جلسه تأیید میشود، در غیر این صورت درخواست با خطای
403 Forbidden رد میشود.
راهنمای راهاندازی
گام اول — دریافت کلید مخفی
وارد داشبورد مدیریت فیدگاه شوید و به مسیر تنظیمات > فضاهایکاری > تنظیمات SDK > شناسایی امن بروید.
گزینه الزامی کردن شناسایی امن (Enforce Secure Identify) را فعال کنید.
مقدار SecretKey را کپی کنید.
این کلید کاملاً محرمانه است. هرگز آن را در فرانتاند، مخازن عمومی (Git)، یا لاگهای سرور قرار ندهید.
به محض فعالسازی، تمام درخواستهای identify فاقد توکن معتبر با خطای 403 Forbidden رد میشوند.
توصیه برای راهاندازی تدریجی
اگر مایل نیستید این قابلیت فوراً برای تمام کاربران اجباری شود، میتوانید پس از کپی کردن SecretKey، گزینه فعالسازی را موقتاً غیرفعال کنید. با این کار کلید شما همچنان معتبر میماند، اما سیستم تا زمان آمادهسازی نهایی کد شما، درخواستهای بدون توکن را رد نخواهد کرد.
گام دوم — تولید امضا در سرور
در بکاند خود، با استفاده از شناسه کاربر و کلید مخفی، یک توکن HMAC-SHA256 تولید کنید:
import crypto from 'crypto';
export function generateFidegahToken(userId) {
const secretKey = process.env.FIDEGAH_SECRET_KEY;
return crypto
.createHmac('sha256', secretKey)
.update(String(userId))
.digest('hex');
}import hmac
import hashlib
import os
def generate_fidegah_token(user_id: str) -> str:
secret_key = os.environ.get("FIDEGAH_SECRET_KEY").encode("utf-8")
return hmac.new(secret_key, str(user_id).encode("utf-8"), hashlib.sha256).hexdigest()
function generateFidegahToken(string $userId): string {
$secretKey = $_ENV['FIDEGAH_SECRET_KEY'];
return hash_hmac('sha256', (string) $userId, $secretKey);
}import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"os"
)
func generateFidegahToken(userID string) string {
secretKey := []byte(os.Getenv("FIDEGAH_SECRET_KEY"))
mac := hmac.New(sha256.New, secretKey)
mac.Write([]byte(userID))
return hex.EncodeToString(mac.Sum(nil))
}
require 'openssl'
def generate_fidegah_token(user_id)
secret_key = ENV['FIDEGAH_SECRET_KEY']
OpenSSL::HMAC.hexdigest('SHA256', secret_key, user_id.to_s)
endگام سوم — ارسال توکن به SDK فرانتاند
توکن تولیدشده در سرور را به فرانتاند بفرستید و آن را در فیلد token به متد identify پاس دهید:
Fidegah.identify({
id: "9482", // شناسه کاربر در دیتابیس شما
name: "نریمان فلاحی",
email: "narimanfallahi.ir@gmail.com",
token: "TOKEN_GENERATED_BY_SERVER", // توکنی که در گام دوم ساختید
});گام چهارم — فعالسازی اجباری در پنل
پس از اطمینان از صحت پیادهسازی، میتوانید این قابلیت را به صورت اجباری فعال کنید:
وارد داشبورد مدیریت فیدگاه شوید و به مسیر تنظیمات > فضاهایکاری > تنظیمات SDK > شناسایی امن بروید.
گزینه الزامی کردن شناسایی امن (Enforce Secure Identify) را فعال کنید.
