پرش به مطلب اصلی

نکات مهم امنیتی

در این سند، شیوه‌های امنیتی ضروری برای به‌کارگیری SDK زربان در برنامه‌هایتان را شرح می‌دهیم. اگر این دستورالعمل‌ها را رعایت کنید، یکپارچه‌سازی‌تان امن می‌ماند و دارایی کاربرانتان محفوظ.

احراز هویت و امنیت رمز عبور

الزامات رمز عبور

  • سیاست گذرواژه قوی را اعمال کنید:
    • دست‌کم ۱۲ نویسه
    • باید ترکیبی از این‌ها باشد:
      • حروف بزرگ (A-Z)
      • حروف کوچک (a-z)
      • اعداد (۰-۹)
      • کاراکترهای ویژه (!@#$٪^&*)
    • از الگوها و توالی‌های رایج دوری کنید
    • نگذارید کاربر گذرواژه‌ای بگذارد که پیش‌تر لو رفته است

ذخیره‌سازی رمز عبور

#رمز عبور را به صورت متن ساده ذخیره نکنید
password = "userPassword123" # نادرست

#رمز عبور را در فایل‌های پیکربندی ذخیره نکنید
config = {
"user_password": "secretPassword" # نادرست
}

#از متغیرهای محیطی برای داده‌های حساس استفاده کنید
import os
api_key = os.environ.get('ZARBAN_API_KEY')

مدیریت کلید API

  • هرگز کلید API را در کد منبع خود ثابت ننویسید
  • کلیدها را در متغیرهای محیطی یا سامانه‌های امن مدیریت اعتبارنامه نگه دارید
  • برای چرخاندن کلید سیاست مشخصی داشته باشید
  • برای محیط توسعه و تولید کلیدهای API جداگانه بگذارید

ارتباطات امن

امنیت نقطه پایانی API

  • همیشه از نقاط پایانی HTTPS استفاده کنید
  • گواهی‌های SSL را وارسی کنید
  • برای امنیت بیشتر، گواهی را پین کنید
  • انقضای گواهی را رصد کنید

مدیریت خطا و ثبت وقایع

مدیریت خطای امن

try:
api_response = api_instance.auth_signup_post(signup_request)
except ApiException as e:
#خطاها را به صورت امن ثبت کنید
logger.error(f"API Error Code: {e.status}")

#اطلاعات حساس را در پیام‌های خطا به کاربران نشان ندهید
#نادرست:
print(f"Failed to authenticate with credentials {signup_request.email}")

#درست:
print("احراز هویت ناموفق بود. لطفاً اعتبارنامه‌های خود را بررسی کرده و دوباره تلاش کنید.")

توصیه‌های عملی برای ثبت وقایع

  1. این اطلاعات حساس را هرگز در لاگ ننویسید:

    • گذرواژه‌ها
    • کلیدهای API
    • کلیدهای خصوصی
    • اطلاعات هویتی اشخاص
  2. سطح ثبت وقایع را درست انتخاب کنید.

  3. لاگ‌ها را به‌صورت امن بچرخانید.

  4. لاگ‌ها را به دنبال رویدادهای امنیتی رصد کنید.

محدودسازی نرخ درخواست

مثال پیاده‌سازی

from datetime import datetime, timedelta
from collections import deque

class RateLimiter:
def __init__(self, max_requests, time_window):
self.max_requests = max_requests
self.time_window = time_window
self.requests = deque()

def can_make_request(self):
now = datetime.now()
while self.requests and now - self.requests[0] >= self.time_window:
self.requests.popleft()

if len(self.requests) < self.max_requests:
self.requests.append(now)
return True
return False

#نحوه استفاده
rate_limiter = RateLimiter(max_requests=100, time_window=timedelta(minutes=1))

اعتبارسنجی و پاکسازی داده

اعتبارسنجی ورودی

import re

def validate_email(email):
pattern = r'^[a-zA-Z0-9.*%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$'
return bool(re.match(pattern, email))

def create_user(email, password): #قبل از پردازش، ورودی را اعتبارسنجی کنید
if not validate_email(email):
raise ValueError("فرمت ایمیل نامعتبر است")

if len(password) < 12:
raise ValueError("رمز عبور خیلی کوتاه است")

پاکسازی خروجی

  1. همه داده‌ها را پیش از نمایش به کاربر پاکسازی کنید
  2. برای هر زمینه، کدگذاری مناسب همان را به کار ببرید؛ HTML، JSON و مانند آن
  3. سیاست امنیتی محتوا را اعمال کنید

مدیریت نشست

توصیه‌های عملی

  1. از توکن نشست امن استفاده کنید
  2. برای نشست محدودیت زمانی درستی بگذارید
  3. نشست را هنگام خروج باطل کنید
  4. فعالیت‌های مشکوک نشست را رصد کنید

سیاهه بررسی استقرار در محیط تولید

پیکربندی‌های امنیتی

  • SSL/TLS به درستی پیکربندی شده
  • کلیدهای API به‌صورت امن ذخیره شده
  • محدودسازی نرخ پیاده‌سازی شده
  • مدیریت خطا پیکربندی شده
  • ثبت وقایع به درستی تنظیم شده
  • اعتبارسنجی ورودی پیاده‌سازی شده
  • پاکسازی خروجی انجام شده
  • مدیریت نشست پیکربندی شده
  • هدرهای امنیتی پیاده‌سازی شده

نظارت و هشدارها

  1. برای این موارد پایش بگذارید:

    • تلاش‌های ناموفق احراز هویت
    • الگوهای غیرعادی در استفاده از API
    • عبور از محدودیت نرخ
    • جهش ناگهانی خطاها
  2. برای رویدادهای امنیتی هشدار تنظیم کنید.

  3. ثبت وقایع حسابرسی را راه بیندازید.

نگهداری منظم امنیتی

کارهای دوره‌ای

  1. SDK را به آخرین نسخه به‌روز کنید
  2. کلیدهای API را هر چند وقت یک بار عوض کنید
  3. پیکربندی‌های امنیتی را بازبینی و به‌روز کنید
  4. لاگ‌های سیستم را حسابرسی کنید
  5. گواهی‌های SSL را پیش از انقضا تمدید کنید
  6. مدیریت خطا را بررسی و آزمایش کنید
  7. اگر لازم شد، سیاست گذرواژه را به‌روز کنید

واکنش به حوادث

طرح واکنش

  1. اعتبارنامه‌های به‌خطرافتاده را بی‌درنگ باطل کنید
  2. حادثه را مستند و بررسی کنید
  3. اگر لازم بود، به کاربرانی که آسیب دیده‌اند اطلاع دهید
  4. اقدامات امنیتی بیشتری در پیش بگیرید
  5. روش‌های امنیتی را بر پایه آنچه از این حادثه آموخته‌اید اصلاح کنید

فراموش نکنید که امنیت کاری پیوسته است، نه کاری که یک بار انجام شود و تمام. شیوه‌های امنیتی خود را مرتب بازبینی و به‌روز کنید تا کاربرانتان در بالاترین سطح حفاظت بمانند.