نکات مهم امنیتی
در این سند، شیوههای امنیتی ضروری برای بهکارگیری 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("احراز هویت ناموفق بود. لطفاً اعتبارنامههای خود را بررسی کرده و دوباره تلاش کنید.")
توصیههای عملی برای ثبت وقایع
-
این اطلاعات حساس را هرگز در لاگ ننویسید:
- گذرواژهها
- کلیدهای 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 و مانند آن
- سیاست امنیتی محتوا را اعمال کنید
مدیریت نشست
توصیههای عملی
- از توکن نشست امن استفاده کنید
- برای نشست محدودیت زمانی درستی بگذارید
- ن شست را هنگام خروج باطل کنید
- فعالیتهای مشکوک نشست را رصد کنید
سیاهه بررسی استقرار در محیط تولید
پیکربندیهای امنیتی
- SSL/TLS به درستی پیکربندی شده
- کلیدهای API بهصورت امن ذخیره شده
- محدودسازی نرخ پیادهسازی شده
- مدیریت خطا پیکربندی شده
- ثبت وقایع به درستی تنظیم شده
- اعتبارسنجی ورودی پیادهسازی شده
- پاکسازی خروجی انجام شده
- مدیری ت نشست پیکربندی شده
- هدرهای امنیتی پیادهسازی شده
نظارت و هشدارها
-
برای این موارد پایش بگذارید:
- تلاشهای ناموفق احراز هویت
- الگوهای غیرعادی در استفاده از API
- عبور از محدودیت نرخ
- جهش ناگهانی خطاها
-
برای رویدادهای امنیتی هشدار تنظیم کنید.
-
ثبت وقایع حسابرسی را راه بیندازید.
نگهداری منظم امنیتی
کارهای دورهای
- SDK را به آخرین نسخه بهروز کنید
- کلیدهای API را هر چند وقت یک بار عوض کنید
- پیکربندیهای امنیتی را بازبینی و بهروز کنید
- لاگهای سیس تم را حسابرسی کنید
- گواهیهای SSL را پیش از انقضا تمدید کنید
- مدیریت خطا را بررسی و آزمایش کنید
- اگر لازم شد، سیاست گذرواژه را بهروز کنید
واکنش به حوادث
طرح واکنش
- اعتبارنامههای بهخطرافتاده را بیدرنگ باطل کنید
- حادثه را مستند و بررسی کنید
- اگر لازم بود، به کاربرانی که آسیب دیدهاند اطلاع دهید
- اقدامات امنیتی بیشتری در پیش بگیرید
- روشهای امنیتی را بر پایه آنچه از این حادثه آموختهاید اصلاح کنید
فراموش نکنید که امنیت کاری پیوسته است، نه کاری که یک بار انجام شود و تمام. شیوههای امنیتی خود را مرتب بازبینی و بهروز کنید تا کاربرانتان در بالاترین سطح حفاظت بمانند.