چرا VPN پیشنمایش توسعه شما را برای اشتراکگذاری ایمن نمیکند
یک VPN به تسترها مسیری به نمونه اولیه شما میدهد؛ اما پیشنمایش را ایمن نمیکند. پیش از اشتراکگذاری، مخاطب، محیط اجرا، دادهها و اثرات جانبی را مشخص کنید.
قرار دادن یک نمونه اولیه پشت VPN خصوصی به نظر میرسد، بنابراین تنها پرسش باقیمانده این است که چه کسی پروفایل را دریافت میکند. این فرض به شکلی مشخص شکست میخورد: یک تونل کنترل میکند چه کسی میتواند به یک میزبان برسد، نه اینکه میزبان پس از رسیدن آنها چه چیزی را آشکار میکند. پیشنمایش همچنان یک محیط اجرا را اجرا میکند، داده نگه میدارد و یکپارچهسازیهایی را فراخوانی میکند که میتوانند ایمیل واقعی بفرستند یا در پایگاه داده واقعی بنویسند. با VPN مانند در ورودی رفتار کنید و سپس اتاق پشت آن را طراحی کنید.
یک مسیر مخاطب نیست
ثبت یک تستر در VPN دقیقاً به یک پرسش پاسخ میدهد: آیا این دستگاه میتواند به نشانی برسد؟ درباره اینکه این دستگاه مجاز است از کدام صفحهها، APIها یا کنسولها استفاده کند چیزی نمیگوید. اینها مجوزهای جداگانهاند و دروازهای که فقط نشانیها را میشناسد نمیتواند آنها را اعمال کند.
قرارداد پیشنمایش را به صورت فهرستی کوتاه بنویسید: نام میزبان، شنونده، عملیات مجاز و اینکه هر نقش در دست کیست. سپس بررسی کنید که فهرست با آنچه واقعاً آشکار شده مطابقت دارد.
تستری که میتواند نمونه اولیه را باز کند به کنسول استقرار، صفحه مدیریت پایگاه داده یا پوشه خانگی توسعهدهنده نیازی ندارد. اگر دروازه یک مسیر زیرشبکه بدهد، همه اینها بهطور پیشفرض در دسترس هستند. مسیر بهازای هر مقصد را ترجیح دهید یا سرویسهای اضافی را پشت احراز هویت خودشان بگذارید. هر یک از این دو انتخاب آنچه یک پروفایل دزدیدهشده میتواند انجام دهد را محدود میکند.
محیط اجرایی که به اشتراک میگذارید بخشی از قرارداد است
یک سرور توسعه با اشکالزدا و بارگذاری خودکار ابزاری برای یک نفر روی یک ماشین است. مستندات چارچوبها در این باره صریح است: راهنمای استقرار Flask میگوید سرور توسعه و اشکالزدای آن برای تولید نیستند و سرویسهای خصوصی یا تککاربره را نیز تولید به حساب میآورد. همین استدلال برای هر چارچوبی با بارگذار مجدد و صفحه خطای تعاملی صدق میکند. ویژگیهای راحتی برای کوتاه کردن حلقه میان ذخیره یک فایل و دیدن یک تغییر طراحی شدهاند، نه برای مواجهه با تستری که کنترلش نمیکنید.
ردیابی تعاملی یک نشت اطلاعات است و در برخی اشکالزداها سطحی برای اجرای کد. آن را از پیشنمایش دور نگه دارید یا پیشنمایش را به ساختنی محدود کنید که نمیتواند آن را فعال کند. اگر تسترها به تشخیص نیاز دارند، به آنها گزارش بدهید نه کنسول.
شنونده با کاراکتر عام نیمه دیگر این خطاست. اتصال به همه رابطها سرویس را در شبکههایی که قصدش را نداشتید، از جمله Wi-Fi کافه، آشکار میکند.
از حسابهای یکبارمصرف و دادههای بدون اثرات جانبی واقعی استفاده کنید
از حسابهایی که برای آزمون ساخته شدهاند و دادههایی که نمیتوانند کسی را شرمنده کنند استفاده کنید. بخش خطرناک بهندرت سطر پایگاه داده است؛ یکپارچهسازی پشت دکمه است. ایمیل، پرداختها، پیامک، وبهوکها و خروجی فایل همه به بیرون از پیشنمایش میرسند.
هر اثر خروجی را که نمونه اولیه میتواند ایجاد کند فهرست کنید، سپس هر یک را به یک جعبه شنی هدایت کنید یا غیرفعالش کنید. یک مسیر خصوصی یک نقطه پرداخت زنده را بیخطر نمیکند.
اعتبارنامههای تولید همان مشکل در شکلی دیگرند. پیشنمایشی که کلید API تولید را برای صرفهجویی در زمان راهاندازی به ارث میبرد، یک سیستم تولیدی با رابط اشکالزدایی است. اعتبارنامههای محدود با کوچکترین مجوزهای مفید بسازید. وقتی پیشنمایش پایان یافت آنها را بچرخانید، زیرا پیشنمایش لغوشده با کلیدهای زنده هنوز زنده است.
صفحه، داراییها و سوکت را بررسی کنید
صفحهای که رندر میشود پیشنمایشی که کار میکند نیست. ممکن است HTML بارگذاری شود در حالی که میزبان دارایی، یک API یا یک WebSocket هنوز به نشانی اشاره میکند که تستر نمیتواند به آن برسد. هر یک از اینها یک ورودی جداگانه در قرارداد است.
از یک دستگاه تأییدشده، صفحه و بزرگترین دارایی را جداگانه درخواست کنید:
curl -sS -o /dev/null -w "%{http_code}" https://preview.staging.example/
curl -sS -o /dev/null -w "%{http_code}" https://preview.staging.example/assets/app.js
سپس در طول یک تعامل واقعی کنسول مرورگر را تماشا کنید و تأیید کنید که سوکت بارگذاری زنده وصل میشود. اگر وصل نشد، راهحل یک مسیر عمدی برای آن نقطه پایانی است، نه قاعدهای که تا کامل به نظر رسیدن صفحه گسترش یابد.
پیشنمایش را در یک تاریخ بازنشسته کنید، نه بر اساس حافظه
در همان لحظهای که پیشنمایش را میسازید، به آن یک مالک و یک تاریخ پایان بدهید. وقتی تاریخ رسید، ورودی، هویت تسترها و اعتبارنامههای موقت را از طریق هر پیکربندی که مالک آنهاست حذف کنید. پیشنمایش فراموششده همان راهی است که یک نمونه اولیه خصوصی به یک نمونه عمومی دائمی تبدیل میشود.
بازنشستگی را از بیرون بررسی کنید: نام میزبان باید از حل شدن دست بردارد یا از پاسخ دادن به مشتریان تأییدنشده دست بردارد.
منبع و یادداشتهای بازیابی را نگه دارید، اما مسیر جایگزین را نه. آزمون یک مرز خوب پیشنمایش خستهکننده است: یک دستگاه تأییدشده میتواند اقدامات لازم را انجام دهد و یک هویت تأییدنشده نمیتواند. همین باید پس از خاموش شدن تونل نیز برقرار باشد. آن نتیجه ارزشمندتر از یک نماد VPN در کنار نمونه اولیهای است که با همه ویژگیهای توسعه فعال اجرا میشود.