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

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

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

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

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

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

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

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

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

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

مدیریت کلید API

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

ارتباطات امن

پیکربندی SSL/TLS

from zarban.wallet.openapi_client.configuration import Configuration

#گواهی‌های SSL را تأیید کنید
configuration = Configuration(
host="https://api.zarban.io",
verify_ssl=True # پیش‌فرض True است، برای تأکید نمایش داده شده
)

#تأیید SSL را در محیط تولید غیرفعال نکنید
configuration = Configuration(
host="https://api.zarban.io",
verify_ssl=False # نادرست برای محیط تولید
)

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

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

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

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

from zarban.wallet.openapi_client.exceptions import ApiException

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("احراز هویت ناموفق بود. لطفاً اعتبارنامه‌های خود را بررسی کرده و دوباره تلاش کنید.")

بهترین شیوه‌های ثبت وقایع

۱. هرگز اطلاعات حساس مانند موارد زیر را ثبت نکنید:

  • رمزهای عبور
  • کلیدهای API
  • کلیدهای خصوصی
  • اطلاعات شناسایی شخصی ۲. از سطوح مناسب ثبت استفاده کنید ۳. چرخش امن لاگ را پیاده‌سازی کنید ۴. لاگ‌ها را برای رویدادهای امنیتی نظارت کنید

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

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

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("رمز عبور خیلی کوتاه است")

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

۱. تمام داده‌ها را قبل از نمایش به کاربران پاکسازی کنید
۲. از کدگذاری مناسب برای زمینه‌های مختلف استفاده کنید (HTML، JSON و غیره)
۳. سیاست‌های امنیتی محتوا را پیاده‌سازی کنید

مدیریت نشست

بهترین شیوه‌ها

۱. از توکن‌های نشست امن استفاده کنید
۲. محدودیت زمانی نشست را به درستی پیاده‌سازی کنید
۳. نشست‌ها را هنگام خروج باطل کنید
۴. فعالیت‌های مشکوک نشست را نظارت کنید

#مثال پیکربندی نشست
session_config = {
'session_lifetime': timedelta(hours=1),
'refresh_token_lifetime': timedelta(days=7),
'max_active_sessions': 3
}

چک‌لیست استقرار در محیط تولید

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

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

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

۱. نظارت را برای موارد زیر تنظیم کنید:

  • تلاش‌های ناموفق احراز هویت
  • الگوهای غیرمعمول استفاده از API
  • نقض محدودیت نرخ
  • افزایش ناگهانی خطاها ۲. هشدارها را برای رویدادهای امنیتی پیکربندی کنید
    ۳. ثبت وقایع حسابرسی را پیاده‌سازی کنید

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

وظایف روتین

۱. SDK را به آخرین نسخه به‌روزرسانی کنید
۲. کلیدهای API را به صورت دوره‌ای تغییر دهید
۳. پیکربندی‌های امنیتی را بررسی و به‌روزرسانی کنید
۴. لاگ‌های سیستم را حسابرسی کنید
۵. گواهی‌های SSL را قبل از انقضا به‌روزرسانی کنید
۶. مدیریت خطا را بررسی و آزمایش کنید
۷. سیاست‌های رمز عبور را در صورت نیاز به‌روزرسانی کنید

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

طرح واکنش

۱. بلافاصله اعتبارنامه‌های به خطر افتاده را باطل کنید
۲. حادثه را مستند و بررسی کنید
۳. در صورت نیاز به کاربران تحت تأثیر اطلاع دهید
۴. اقدامات امنیتی اضافی را پیاده‌سازی کنید
۵. روش‌های امنیتی را بر اساس درس‌های آموخته شده به‌روزرسانی کنید

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