آیا وایب کدینگ امن است؟ ریسکهای واقعی و آنچه قبل از انتشار باید بررسی کنید
وایب کدینگ برای ابزارهای شخصی و نمونههای اولیه امن است و میتواند برای اپهای واقعی با کاربران واقعی هم امن باشد، اما فقط اگر بررسیهایی را اضافه کنید که «فقط توصیف کن و ببین کار میکند» از آنها رد میشود. مشکلات خطرناک از روی صفحه دیده نمیشوند: کاربرانی که میتوانند دادهی یکدیگر را باز کنند، کلیدهای مخفی که در مرورگر قرار دارند، و فرمهای عمومی بدون هیچ محدودیتی. این راهنما ریسکهایی را توضیح میدهد که واقعاً دردسر ایجاد میکنند، نحوهی برخورد با اسرار، میزان بازبینی لازم، و یک بررسی ۳۰ دقیقهای که پیش از انتشار اجرا کنید.
برای فهرست کامل فنی، چکلیست امنیتی برای اپهای ساختهشده با هوش مصنوعی را ببینید. این صفحه نسخهی کوتاه و عملیتری برای کسانی است که کد نمیخوانند.
چرا وایب کدینگ ریسکهای خاص خودش را دارد
وقتی وایب کدینگ میکنید، اپ را با استفاده از آن ارزیابی میکنید. این روش دکمههای خراب و طراحیهای زشت را پیدا میکند. اما مشکلاتی را که فقط وقتی کاربر دیگری اپ را متفاوت از شما استفاده کند ظاهر میشوند پیدا نمیکند: یک غریبه، یک ربات، یا کاربر کنجکاوی که آدرس وب را دستکاری میکند.
مدلهای هوش مصنوعی کد قابلقبول مینویسند و بیشترش درست است. اما برای چیزی که خواستهاید بهینه میشوند — «داشبورد را طوری بساز که پروژههای من را نشان دهد» — و ممکن است حفاظتی را که نخواستهاید اضافه نکنند — «و پروژههای بقیه را نشان ندهد». راهحل این نیست که وایب کدینگ را کنار بگذارید. این است که حفاظتها را صریحاً بخواهید و سپس آزمایشش کنید.
اپ شما چقدر ریسک دارد؟ یک مقیاس سریع
| اپ شما | ریسک | آنچه لازم دارید |
|---|---|---|
| ابزار شخصی که فقط خودتان استفاده میکنید، بدون دادهی حساس | کم | کلیدها را بیرون از کد نگه دارید. همین تقریباً کافی است. |
| وبسایت عمومی یا صفحهی فرود با فرم | کم تا متوسط | محدودیت فرم، حفاظت در برابر ربات، بدون اسرار در صفحه |
| اپی که افراد ثبتنام میکنند و دادهی خودشان را ذخیره میکنند | متوسط | همهی موارد این صفحه |
| پرداخت، دادهی سلامت، مالی، کودکان یا هویت | زیاد | همهی موارد این صفحه، بهعلاوهی بازبینی توسعهدهنده |
در ردیفی که هستید صادق باشید. بسیاری از اپها از ردیف اول شروع میکنند و بیآنکه کسی تصمیم بگیرد به ردیف سوم میرسند.
ریسکهایی که واقعاً دردسر ایجاد میکنند
۱. کاربران دادهی یکدیگر را میبینند
این رایجترین مشکل جدی در اپهای ساختهشده با هوش مصنوعی است. صفحه فقط رکوردهای هر کاربر را نشان میدهد، پس درست به نظر میرسد. اما سرور هر رکوردی را پس میدهد اگر کسی شناسه را در نوار آدرس یا در یک درخواست عوض کند. چون همیشه با حساب خودتان تست میکنید، هرگز آن را نمیبینید.
چطور بررسی کنیم: دو حساب بسازید. با حساب A وارد شوید، یکی از رکوردهای A را باز کنید و آدرس آن را یادداشت کنید. با حساب B در یک پنجرهی خصوصی وارد شوید و آن آدرس را قرار دهید. باید «پیدا نشد» ببینید، نه دادهی A.
دستور:
هر نقطهی پایانی سرور را که دادهی کاربر را میخواند، تغییر میدهد یا حذف میکند بررسی کن. هر کدام باید تأیید کند که کاربر وارد شده اجازهی دسترسی به آن رکورد مشخص را دارد. فهرست نقطههای پایانی را بده، توضیح بده هر کدام چطور بررسی میکند، و هر موردی را که بررسی ندارد اصلاح کن.
۲. اسرار در جای اشتباه
سِرّ هر چیزی است که دسترسی میدهد: کلید API برای سرویس هوش مصنوعی یا ایمیل، رمز پایگاهداده، کلید مخفی یک درگاه پرداخت. اگر در کدی باشد که در مرورگر اجرا میشود، هر کسی میتواند با ابزارهای توسعهدهنده آن را کپی کند. اگر در یک مخزن عمومی کامیت شود، رباتی آن را در کمتر از چند ساعت پیدا میکند.
چطور بررسی کنیم: از هوش مصنوعی بپرسید.
هر کلید API، توکن و رمزی را که این اپ استفاده میکند فهرست کن. برای هر کدام بگو کجا ذخیره شده و آیا هرگز به مرورگر فرستاده میشود. هر موردی که در کد یا در بخش فرانتاند است را به اسرار سمت سرور منتقل کن.
۳. فرمها و نقطههای پایانی عمومی بدون محدودیت
فرمهای تماس، ثبتنام و قابلیتهای هوش مصنوعی توسط رباتها پیدا میشوند. بدون محدودیت، اسپم، حسابهای جعلی یا صورتحساب سنگین از فراخوانی هزارانبارهی یک API هوش مصنوعی به سراغ شما میآید.
دستور:
برای ثبتنام، ورود، فرم تماس و هر نقطهی پایانی که سرویس هوش مصنوعی را صدا میزند، محدودیت نرخ اضافه کن. برای فرمهای عمومی یک فیلد تلهی نامرئی (honeypot) اضافه کن. محدودیتهایی را که انتخاب کردی به من بگو.
۴. اعتماد به مرورگر
هر چیزی را که مرورگر تصمیم میگیرد کاربر میتواند تغییر دهد: قیمتها، تخفیفها، پاسخهای آزمون، پرچمهای «ادمین است». قواعد مهم باید روی سرور اعمال شوند.
دستور:
جاهایی را پیدا کن که مرورگر چیزی را تصمیم میگیرد که باید سرور تصمیم بگیرد: قیمت، جمع کل، دسترسیها، نقشها، امتیازها. آن بررسیها را به سرور منتقل کن.
۵. راه بازگشتی وجود ندارد
یک تغییر بد یا یک عامل مخرب میتواند داده را حذف کند. اگر پشتیبان و راهی برای برگرداندن تغییرات نباشد، یک اشتباه کوچک به یک اشتباه دائمی تبدیل میشود. مطمئن شوید ابزارتان برای کد نقطهی بازگشت و برای پایگاهداده پشتیبان دارد. چطور از پایگاهدادهی اپ پشتیبان بگیریم را ببینید.
نگهداری درست اسرار
اسرار بیشتر از هر چیز دیگری خسارت قابلاجتناب ایجاد میکنند، پس قواعد را یکجا آوردهایم:
- هرگز کلید واقعی را در چت نچسبانید. چتها ذخیره، به اشتراک گذاشته و از آنها اسکرینشات گرفته میشود. کلیدها را در بخش اسرار یا متغیرهای محیطی ابزارتان قرار دهید. (متغیرهای محیطی و اسرار چیستند.)
- سرویسهای پولی را از سرور صدا بزنید. مرورگر از سرور درخواست میکند؛ سرور با کلید، سرویس هوش مصنوعی یا پرداخت را صدا میزند.
- برای آزمایش و استفادهی واقعی، کلیدهای جداگانه داشته باشید، تا کلید آزمایشی لو رفته به پول واقعی دسترسی نداشته باشد.
- سقف هزینه تعیین کنید در داشبورد ارائهدهندگان هوش مصنوعی و ایمیل.
- اگر فکر میکنید کلیدی لو رفته، فوراً آن را عوض کنید. کلید جدید بسازید، سِرّ را بهروز کنید، و سپس کلید قدیمی را حذف کنید.
در Mythex اسرار در تنظیمات پروژه، بیرون از کد، نگه داشته میشوند و عامل میتواند از آنها استفاده کند بیآنکه مقادیرشان در چت ظاهر شود. راهنمای ما دربارهی نگه داشتن امن کلیدهای API ارائهدهندگان بیشتری را پوشش میدهد.
چقدر بازبینی کد لازم است؟
وایب کدینگ یعنی همهی خطوط را نمیخوانید. لازم هم نیست. اما برای برخی خطوط، باید کسی آنها را بخواند.
- ابزارهای شخصی: فراتر از بررسیهای این صفحه نیازی نیست.
- اپهایی با حساب کاربری: نحوهی ورود و دسترسی به داده را بازبینی کنید. این کار را میتوانید با خواستن توضیح ساده از هوش مصنوعی انجام دهید و بررسی کنید که توضیح با انتظار شما بخواند.
- اپهایی با پرداخت یا دادهی حساس: از یک توسعهدهنده بخواهید احراز هویت، دسترسیها، مدیریت پرداخت و هر چیزی که دادهی شخصی ذخیره میکند را بررسی کند. این چند ساعت وقت او است، نه بازنویسی کامل.
یک دستور مفید حتی بدون توسعهدهنده:
به زبان ساده توضیح بده این اپ چطور تشخیص میدهد کاربر کیست و چه چیزهایی اجازه دارد ببیند. فایلها را نشان بده. سپس هر موردی را فهرست کن که دوست داری یک بازبین امنیتی آن را بررسی کند.
راهنمای ما دربارهی بازبینی کدِ تولیدشده با هوش مصنوعی توضیح میدهد بازبینها دنبال چه چیزی هستند، و میتوانید آن را به هر کسی که بازبینی میکند بدهید. اگر ابزارتان اجازهی خروجی گرفتن از کد یا همگامسازی با GitHub را بدهد، ترتیب دادن این بازبینی آسان است؛ در Mythex هر دو در نسخهی Pro هستند.
بررسی ۳۰ دقیقهای پیش از انتشار
این را پیش از آنکه لینک را با کسی خارج از دایرهی خودتان به اشتراک بگذارید اجرا کنید.
دسترسی (۱۰ دقیقه)
۱. دو حساب، دو مرورگر: آیا B میتواند با آدرس، رکوردهای A را باز کند؟ نباید بتواند. ۲. از حساب خارج شوید و آدرس مستقیم هر صفحه را باز کنید. صفحههای خصوصی باید شما را به صفحهی ورود بفرستند. ۳. به عنوان کاربر عادی، آدرسهای مدیریت را باز کنید. باید رد شوند.
اسرار (۵ دقیقه)
۴. با دستور بالا از هوش مصنوعی بپرسید هر کلیدی کجا قرار دارد. ۵. اپ را باز کنید، سورس صفحه را ببینید و دنبال «key»، «secret» و «token» بگردید.
فرمها و سوءاستفاده (۵ دقیقه)
۶. هر فرمی را خالی، با متن بسیار طولانی، و دو بار پشت سر هم ارسال کنید. ۷. مطمئن شوید محدودیت نرخ برای ثبتنام، ورود و هر قابلیت هوش مصنوعی وجود دارد.
داده و بازیابی (۵ دقیقه)
۸. بدانید داده کجا ذخیره میشود و چطور بازیابی میشود. ۹. بررسی کنید میتوانید کد را به یک نسخهی کاری قبلی برگردانید.
قانونی و اصول اولیه (۵ دقیقه)
۱۰. اگر دادهی شخصی جمع میکنید، یک سیاست حریم خصوصی اضافه کنید و بگویید چه چیزی جمع میکنید. چطور شرایط خدمات و سیاست حریم خصوصی بنویسیم را ببینید. ۱۱. مطمئن شوید اپ منتشرشده از HTTPS استفاده میکند. بیشتر سازندهها، از جمله Mythex، این را برای شما انجام میدهند.
اگر همهی موارد پاس شد، برای یک راهاندازی اولیه وضعیت خوبی دارید. مراحل ۱ تا ۵ را پس از هر تغییر بزرگ در ورود، نقشها یا داده تکرار کنید.
پلتفرمهای وایب کدینگ چه چیزی را محافظت میکنند و چه چیزی را نه
یک پلتفرم خوب بخش زیادی از زیرساخت را مدیریت میکند: HTTPS، فضای کاری جدا، پایگاهداده برای هر پروژه، ذخیرهی اسرار، پشتیبان و بازگشت. Mythex به هر پروژه فضای کاری خصوصی و پایگاهدادهی خودش میدهد، اسرار را بیرون از کد نگه میدارد، و پس از هر تغییر موفق یک نقطهی بازگشت ذخیره میکند تا بتوانید آن را برگردانید.
آنچه هیچ پلتفرمی نمیتواند انجام دهد این است که قواعد اپ شما را بداند. فقط شما میدانید که مشتریها نباید صورتحسابهای یکدیگر را ببینند، یا یک کوپن باید فقط یک بار کار کند. این قواعد باید در دستورهایتان باشند و با تستهایتان تأیید شوند.
پاسخ کوتاه
وایب کدینگ به اندازهی بررسیهایی امن است که اضافه میکنید. برای یک ابزار شخصی، کلیدها را بیرون از کد نگه دارید و از آن لذت ببرید. برای هر چیزی که دادهی دیگران را دارد، بررسی ۳۰ دقیقهای بالا را پیش از هر راهاندازی اجرا کنید، و برای پرداخت و دادهی حساس از نگاه یک توسعهدهنده استفاده کنید. برای دیدن این ریسکها در پروژههای واقعی، نمونههای وایب کدینگ ما را بخوانید؛ و برای ساختن با این بررسیها از ابتدا، چطور اپ را با وایب کدینگ بسازیم را دنبال کنید.
پرسشها
آیا وایب کدینگ امن است؟
برای ابزارهای شخصی و نمونههای اولیهای که دادهی حساس ندارند، امن است. برای اپهایی که دیگران در آن ثبتنام میکنند، داده ذخیره میکنند یا پرداخت میکنند، فقط در صورتی امن است که بررسیهایی را که وایب کدینگ معمولاً نادیده میگیرد اضافه کنید: قواعد دسترسی در سرور، اسرار بیرون از کد، محدودیت برای فرمهای عمومی و بازبینی هر بخشی که با پول یا دادهی شخصی سروکار دارد.
بزرگترین ریسک امنیتی در اپهای وایب کدینگ شده چیست؟
کنترل دسترسی شکسته: یک کاربر وارد شده میتواند دادهی کاربر دیگری را بخواند یا تغییر دهد، معمولاً با عوض کردن یک شناسه در درخواست. وقتی خودتان با حساب خودتان تست میکنید هرگز دیده نمیشود، و به همین دلیل این مشکل اینقدر رایج است. عمدی و با دو حساب آن را آزمایش کنید.
آیا کدی که هوش مصنوعی تولید کرده میتواند کلید API مرا فاش کند؟
بله، اگر کلید در کدی قرار بگیرد که در مرورگر بازدیدکننده اجرا میشود یا در یک مخزن عمومی کامیت شود. کلیدها را در بخش اسرار یا متغیرهای محیطی ابزارتان نگه دارید، سرویسهای بیرونی را از سمت سرور صدا بزنید و از هوش مصنوعی بخواهید فهرست کند هر کلید کجا استفاده میشود.
آیا برای بازبینی یک اپ وایب کدینگ شده به توسعهدهنده نیاز دارم؟
برای یک ابزار شخصی یا نمونهی اولیه نه. پیش از آنکه مستقیم پرداخت بپذیرید، دادهی سلامت، مالی یا دادهی کودکان را ذخیره کنید، یا اپ را برای تعداد زیادی کاربر باز کنید، بازبینی توسعهدهنده لازم است. خروجی گرفتن از کد یا دسترسی به GitHub این بازبینی را ساده میکند.
آیا کد و دادهی من روی یک پلتفرم وایب کدینگ امن است؟
بسته به پلتفرم دارد، پس صفحات امنیت و حریم خصوصی آن را بخوانید. در Mythex هر پروژه در فضای کاری خصوصی خودش با پایگاهدادهی جداگانه اجرا میشود، اسرار بیرون از کد ذخیره میشوند و نقطههای بازگشت (checkpoint) به شما اجازه میدهند تغییر بد را برگردانید. منطق خود اپ همچنان به بررسیهای این راهنما نیاز دارد.