امنیت
هر کلید کجا میتواند باشد، چه چیزی از آن محافظت میکند، و چکلیست پیش از راهاندازی.
دانشیار سه نوع اعتبارنامه دارد و هرکدام فقط در یک جا امن است.
کلید سرور و کلید مرورگر
با این جدول تصمیم بگیرید هرکدام کجا برود:
| جایی که میفرستیدش | چه کسی از آن استفاده میکند | قاعده |
|---|---|---|
X-API-Key | سرور شما، وقتی REST API (/v1) را صدا میزند. | محرمانه. در متغیر محیطی سرور یا یک ابزار نگهداری رمزها نگهش دارید. هیچوقت آن را به مرورگر نفرستید. |
data-api-key | ابزارک در صفحههای عمومی شما. | عمومی؛ هر کسی میتواند ببیندش. فعلاً همان کلید سرور است، پس بخش بعد را بخوانید. |
Authorization: Bearer | کنسول دانشیار، بعد از ورود. | کنسول خودش مدیریتش میکند. با /v1 کار نمیکند و هیچوقت لازم نیست کپیاش کنید. |
امن کردن کلید ابزارک
وقتی ابزارک کلید محدود خودش را بگیرد، این وضع عوض میشود. تا آن وقت، این چهار کار را بکنید:
- یک اپ فقط برای ابزارک بسازید. هر کلید فقط روی اپ خودش کار میکند، پس دست کسی به بقیهٔ اپها و اسنادشان نمیرسد.
- فقط اسنادی را بارگذاری کنید که از انتشارشان مشکلی ندارید. هیچوقت پروندهٔ بیمار یا فایل خصوصی در آن نگذارید.
- یک نسخه از همین اسناد را خودتان نگه دارید تا اگر لازم شد، فضای کاری را دوباره بسازید.
- کلید اپ ابزارک را هیچوقت برای کارهای سمت سرور به کار نبرید. درخواستهای سرور از اپ دیگری با کلید خودش استفاده میکنند.
دامنههای مجاز از چه چیزی محافظت میکنند
دامنههای مجاز به یک قاعدهٔ frame-ancestors روی صفحهٔ ابزارک تبدیل میشوند و این قاعده را مرورگر بازدیدکننده اجرا میکند.
- جلوی این را میگیرد: سایت دیگری ابزارک شما را به بازدیدکنندههای خودش نشان دهد و از اعتبار شما خرج کند.
- جلوی این را نمیگیرد: کسی کلید را کپی کند و با یک اسکریپت یا curl، API را صدا بزند. سرور بررسی نمیکند درخواست از کجا آمده است.
نوشتن دامنهها: دامنههای مجاز.
محدودیت تعداد درخواست
ابزارک سه محدودیت دارد: ۲۰ سؤال در ساعت برای هر نشانی IP، ۵۰۰ سؤال در روز برای هر اپ، و ۶۰ بار بارگذاری در ساعت برای هر نشانی IP. جزئیات در محدودیتها و هزینه آمده است.
REST API (/v1) هنوز محدودیت تعداد درخواست ندارد. اگر آن را پشت مسیر خودتان گذاشتهاید، همانجا برای هر کاربر محدودیت بگذارید تا یک نفر نتواند همهٔ اعتبارتان را خرج کند.
CORS
CORS یک قاعدهٔ مرورگر است و تعیین میکند کدام سایتها میتوانند با JavaScript یک API را صدا بزنند.
- ابزارک به تنظیم CORS از طرف شما نیازی ندارد؛ داخل iframe و روی سایت خود دانشیار اجرا میشود.
- صدا زدن
/v1با JavaScript سایت خودتان، با CORS مسدود میشود. این عمدی است: آن را از سرورتان صدا بزنید. - اگر سایتتان Content-Security-Policy میفرستد، سایت ابزارک را در
script-srcوframe-srcمجاز کنید؛ وگرنه مرورگر اسکریپت و iframe را مسدود میکند.
عوض کردن و باطل کردن کلیددر نقشهٔ راه: بهزودی
فعلاً نمیتوانید خودتان کلید را عوض یا باطل کنید. هر اپ در تمام عمرش یک کلید دارد.
چکلیست پیش از راهاندازی
- کلید سرور فقط در متغیرهای محیطی سرور است؛ نه در Git و نه در هیچ کد سمت کاربر.
- ابزارک اپ جداگانهٔ خودش را دارد که فقط اسناد عمومی در آن است.
- فهرست دامنههای مجاز فقط سایتهای واقعی شما را دارد و دامنهٔ آزمایشی جاماندهای در آن نیست.
- مسیر گفتوگوی خودتان، اگر دارید، محدودیت تعداد درخواست دارد و برای هر کاربر یک external_user_id میفرستد.
- Content-Security-Policy سایتتان اسکریپت و iframe ابزارک را مجاز میکند.
- میدانید اگر کلیدی لو رفت با چه کسی تماس بگیرید.