Нұсқаулықтар

AI арқылы жасалған қолданбаларға арналған қауіпсіздік тізімі: іске қосар алдында не тексеру керек

Нақты адамдар AI арқылы жасалған қолданбаны пайдаланбас бұрын жеті нәрсені тексеріңіз: әр бет пен API пайдаланушыны және оның не істеуге құқығы бары туралы тексереді; құпия кілттер браузерде немесе чатта емес, серверде сақталады; барлық енгізілген деректер серверде тексеріледі; әр пайдаланушы тек өз жазбаларына қол жеткізе алады; кіру мен қымбат тұратын соңғы нүктелерде сұраныс шектеулері бар; тәуелділіктер жаңартылған; және бірдеңе дұрыс болмаса, деректеріңізді қалпына келтіре аласыз. Төмендегі тізім әрбірін кодты оқымай-ақ орындай алатын нақты сынақтарға айналдырады.

AI қолданба құрастырушылары функцияларды жұмыс істетуде жақсы. Бірақ олар автоматты түрде сақ бола бермейді, өйткені сақтық туралы сұрауда сирек айтылады. Төмендегі мәселелердің көбі ешкім сұрамаған нәрселерден туындайды, сондықтан шешім — көбіне сұрау.

Тізімді қалай пайдалану керек

Тізімді реттік бойынша өтіңіз және әр элемент үшін екі нәрсе жасаңыз: AI-дан оның орындалғанын қамтамасыз етуін сұраңыз, ал өзіңіз тексеріңіз. AI рұқсат тексеруін жаза алады; оның жұмыс істейтінін тек сынақ көрсетеді. Элементтер белгіленген:

  • Міндетті — қолданбаны басқа адамдар пайдаланбас бұрын орындаңыз.
  • Керек — нақты пайдаланушылар мен нақты деректер пайда болмас бұрын орындаңыз.
  • Кейінірек — қолданба өскен сайын орындауға тұрарлық.

Егер бір сағатыңыз болса, барлық Міндетті элементтерді орындаңыз.

1. Аутентификация: бұл кім?

Аутентификация — біреудің кім екенін растау, әдетте кіру. Негіздерін аутентификация деген не бетінен, нұсқаларын қолданбаға кіруді қалай қосу керек бетінен қараңыз.

  • Міндетті: Жеке деректерді көрсететін әр бетке кіру қажет. Сынақ: жүйеден шығыңыз, содан кейін жеке бетінің URL-ін браузерге тікелей қойыңыз.
  • Міндетті: Осы беттердің артындағы әр API соңғы нүктесі де кіруді талап етеді — тек бет емес. Сынақ: жүйеден шығыңыз, браузердің желі қойындысын ашыңыз және сіз кірген кезде қолданба жасаған сұранысты қайта жіберіңіз.
  • Міндетті: Құпия сөздер жай мәтінде емес, баяу хэштеу алгоритмімен хэштелген күйде сақталады. OWASP құпия сөздерді сақтау бойынша нұсқаулығы Argon2id-ді бірінші орынға қояды, ал scrypt, bcrypt немесе PBKDF2 балама ретінде ұсынылады. Сұраңыз: «Құпия сөздер қалай сақталады?»
  • Керек: Құпия сөзді қалпына келтіру сілтемелерінің мерзімі өтеді және тек бір рет жұмыс істейді.
  • Керек: Сеанс cookie-лері Secure, HttpOnly және SameSite белгілерімен белгіленген, ал шығу сеансты серверде аяқтайды.
  • Кейінірек: Екі факторлы аутентификацияны ұсыныңыз немесе оны бар провайдер арқылы кіруді қосыңыз.

Пайдаланушы деректерін қайтаратын әр API маршрутын және бетті тексеріңіз. Олардың әрқайсысы кірмеген пайдаланушылардың сұраныстарын серверде қабылдамауы тиіс, тек бет кодында емес. Тексерген маршруттарыңыздың тізімін жазыңыз.

2. Авторизация: олар не істеуге рұқсат етілген?

Авторизация — кіргеннен кейінгі қадам: осы нақты пайдаланушы не көріп, не өзгерте алатынын шешу. Мұнда AI арқылы жасалған қолданбаларда ең жиі ауыр осалдықтар болады, себебі қолданба дұрыс көрінеді — әр пайдаланушының панелі тек оның өз деректерін көрсетеді — ал сервер тікелей сұраған кезде кез келген адамның деректерін беруге дайын тұрады.

  • Міндетті: Әр оқу, жаңарту және жою әрекетінде жазба ағымдағы пайдаланушыға (немесе оның командасына) тиесілі екені серверде тексеріледі.
  • Міндетті: Сынаңыз: екі аккаунт жасаңыз, A және B. A ретінде A-ның бір жазбасын ашыңыз және URL-дегі немесе желі сұранысындағы ID-ді жазып алыңыз. B ретінде кіріп, сол ID-ді сұраңыз. B қате алуы керек, A-ның деректерін емес.
  • Міндетті: Әкімші беттері мен әкімші API соңғы нүктелері пайдаланушының рөлін серверде тексереді. Әкімші сілтемесін жасыру қорғаныс емес.
  • Міндетті: Пайдаланушылар сұраныс арқылы өз рөлін, бағасын, балансын немесе иесі өрістерін өзгерте алмайды. Сынақ: желі қойындысында профильді жаңарту не жіберетінін қараңыз. Егер онда role немесе isAdmin сияқты өрістер болса, AI-дан оларды клиент жағынан елемеуін сұраңыз.
  • Керек: URL-дегі ID-лер болжау қиын (1, 2, 3 емес, кездейсоқ ID-лер). Бұл рұқсат тексеруінің орнын баспайды, бірақ ол жоқ болған жағдайда зиянды шектейді.

Жазбаны оқитын немесе өзгертетін әр соңғы нүкте үшін серверде кірген пайдаланушының оның иесі екенін немесе оған қол жеткізуге рұқсаты бар екенін тексеріңіз. Болмаса, 404 қайтарыңыз. Содан кейін екі аккаунтпен осыны қалай сынайтыныңызды маған көрсетіңіз.

3. Дерекқордағы жол деңгейіндегі қолжетімділік

«Жол деңгейіндегі қолжетімділік» дегеніміз — кестедегі әр жол (бір брондау, бір шот-фактура) тек оған тиесілі пайдаланушыларға көрінетіні. Оны іске асырудың екі кең тараған жолы бар:

ТәсілҚалай жұмыс істейдіНе туралы ескерту керек
Серверлік кодыңыздаӘр сұрауда «ағымдағы пайдаланушының иесі» сияқты сүзгі барБір ұмытылған сүзгі барлығын ашып салады
Дерекқорда (мысалы, Postgres жол деңгейіндегі қауіпсіздігі)Дерекқордың өзі пайдаланушы көре алмайтын жолдарды қабылдамайдыКөбірек баптау; сервер дұрыс пайдаланушы ретінде қосылуы керек

Екеуі де жақсы жасалуы мүмкін. Маңыздысы:

  • Міндетті: Браузер дерекқормен тікелей байланысатын болса (кейбір хостингтелген дерекқор өнімдері осыған рұқсат береді), әр кестеге жол деңгейіндегі ережелер қосылған. Олар болмаса, жария кілті бар кез келген адам бүкіл кестені оқи алады.
  • Міндетті: Сұраулар браузер жіберген ID бойынша емес, ағымдағы пайдаланушы немесе команда бойынша сүзіледі.
  • Керек: Ортақ деректердің (команданың жобалары) кім команданың ішінде екенін анықтайтын айқын ереже бар және ол бір жерде іске асырылады.

4. Құпиялар мен API кілттері

API кілті — қызметке арналған құпия сөз. Stripe, электрондық пошта және AI провайдерлері барлығы оларды пайдаланады. Негізгі түсінік үшін орта айнымалылары мен құпиялар деген не бетін қараңыз.

  • Міндетті: Кілттер жоба орта айнымалыларында немесе құпияларында сақталады, кодқа ешқашан жазылмайды.
  • Міндетті: Ақшаны жұмсай алатын немесе жеке деректерді оқи алатын кілттер тек серверде пайдаланылады. Сынақ: тірі сайтыңызды ашыңыз, бет көзін және әзірлеушілік құралдардағы JavaScript файлдарын қараңыз және кілттің басын іздеңіз (мысалы, sk_). Ол шықпауы керек.
  • Міндетті: Кілттер ешқашан чатқа, жария репозиторийге немесе скриншотқа қойылмаған. Қойылса, оны провайдерде қайта шығарыңыз (жаңасын жасап, ескісін жойыңыз).
  • Керек: Провайдер ұсынған жерде шектелген немесе шоғырланған кілттерді қолданыңыз. Мысалы, Stripe тек интеграцияңызға қажет рұқсаттары бар шектелген кілттерді ұсынады.
  • Керек: Сынақ және тірі кілттер бөлек, ал тірі қолданба тірі кілттерді тек сіз дайын болғанда пайдаланады.

Кейбір кілттер жария болуға арналған — Stripe-тың жариялы кілті (pk_…) немесе доменіңізге шектелген карталар кілті. Ереже қуат беретін кілттерге қатысты, кілт сияқты көрінетін әр жолға емес.

5. Енгізілген деректерді тексеру

Пайдаланушы жібергеннің бәрі — форма өрістері, файл жүктеулер, URL параметрлері — формаңыз рұқсат еткеннен басқа кез келген нәрсе бола алады.

  • Міндетті: Тексеру серверде жүреді, тек браузерде емес. Браузер тексерулері ыңғайлылық үшін; кез келген адам оларды өткізіп жібере алады.
  • Міндетті: Дерекқор сұраулары параметрлерді пайдаланады, пайдаланушы енгізген мәтінді біріктірмейді (бұл SQL инъекциясының алдын алады). AI-дан растауын сұраңыз.
  • Міндетті: Пайдаланушы енгізген мәтін мәтін ретінде көрсетіледі, HTML ретінде орындалмайды. Сынақ: атыңыз ретінде <b>hello</b> енгізіңіз. Қалың мәтін емес, тегтерді көруіңіз керек.
  • Керек: Файл жүктеулері түрін және өлшемін тексереді, ал жүктелген файлдар қолданбаның негізгі доменінен орындалатын беттер ретінде берілмейді.
  • Керек: Пайдаланушыларға көрсетілетін қателер қарапайым («Бірдеңе дұрыс болмады»); толық мәліметтер тек сервер журналдарына түседі.
  • Керек: Stripe сияқты қызметтерден келетін webhook-тер әрекет жасамас бұрын провайдердің қолтаңбасын тексереді. Қараңыз: webhook деген не.

Әр форма мен API соңғы нүктесіне серверлік тексеру қосыңыз: міндетті өрістер, ұзындықтар, пішімдер және рұқсат етілген мәндер. Басқаның бәрін анық хабарламамен қабылдамаңыз. Пайдаланушыларға ішкі қате мәліметтерін көрсетпеңіз.

6. Сұраныс шектеулері және теріс пайдалану

Сұраныс шегі адамның белгілі уақыт аралығында жібере алатын сұраныстар санын шектейді. Олар болмаса, кез келген адам күні бойы құпия сөздерді таңдай алады, тіркелу формаңызды толтыра алады немесе ақылы API-де шотыңызды көтере алады.

  • Міндетті: Кіру, тіркелу және құпия сөзді қалпына келтіру IP мекенжайы және аккаунт бойынша шектелген.
  • Міндетті: Әр шақыру үшін ақша шығындайтын нәрсе — AI модель сұраулары, SMS, электрондық пошта — пайдаланушыға шек қояды және кіруді талап етеді.
  • Керек: Жария формаларда (байланыс, күту тізімі) спамнан қорғаныс бар: сұраныс шегі, жасырын ұяшық (honeypot) немесе CAPTCHA.
  • Керек: Ақылы провайдерлерде шығын шегін немесе ескертуін орнатыңыз, сонда қате немесе шабуылдаушы шексіз шот туғыза алмайды.

7. Тәуелділіктер

Қолданбалар ашық бастапқы кодты пакеттерден жасалады, ал пакеттерде кейде белгілі осалдықтар болады.

  • Керек: AI-дан белгілі осалдықтарды тексеруін сұраңыз (JavaScript жобалары үшін npm audit немесе пакет менеджеріңіздің баламасы) және зардап шеккендерін жаңартуын сұраңыз.
  • Керек: Қолданба енді пайдаланбайтын пакеттерді жойыңыз.
  • Керек: Өте аз пайдаланушысы бар пакеттерге немесе танымал пакеттердің емле қателері сияқты аттарға сақ болыңыз.
  • Кейінірек: Әр бір-екі айда қайта тексеріңіз немесе кодыңыз GitHub-та болса, автоматты ескертулерді қосыңыз.

8. Резервтік көшірмелер және қалпына келтіру

Қауіпсіздік қателіктерден — өзіңіздің, AI-дікінен немесе шабуылдаушыныкінен — қалпына келе білуді де қамтиды.

  • Міндетті: Деректеріңіздің қайда сақталатынын және резервтік көшірмесі бар-жоғын білеміз. Болжамаңыз; хостингіңіздің құжаттамасынан тексеріңіз.
  • Керек: Маңызды деректердің өзіңіздің мерзімді экспортын сақтаңыз (мысалы, CSV экспорты функциясы немесе дерекқор дампы), оны бөлек жерде ұстаңыз.
  • Керек: Кодыңызды нұсқаларды бақылау жүйесінде сақтаңыз, сонда кез келген нұсқаны қалпына келтіруге болады.
  • Керек: Жою әрекеттері (аккаунтты жою, жобаны жою) растауды талап етеді, ал белгілі уақыт ішінде қайтаруға болатын «жұмсақ жою» қарастырыңыз.
  • Кейінірек: Қалпына келтіруді бір рет нақты сынаңыз. Ешқашан қалпына келтірілмеген резервтік көшірме — үміт, жоспар емес.

9. Іске қосар алдында

  • Міндетті: Тірі сайт барлық жерде HTTPS қолданады.
  • Міндетті: Әзірлеуден қалған үлгі деректер, сынақ аккаунттары және түзету беттері жойылған.
  • Керек: Құпиялық саясаты қандай деректерді жинайтыныңызды және неге екенін айтады — жеке деректерді жинасаңыз, көптеген жерде міндетті. Жоқ сертификаттарды (SOC 2, HIPAA) талап етпеңіз.
  • Керек: Қауіпсіздік мәселелері бойынша сізбен байланысуға болатын арна бар, және барлық кілттерді тез ауыстыру жолын білесіз.

Қауіпсіздіктен тыс, іске қосар алдындағы кең тексеру үшін AI прототипін өндіріске қалай шығаруға болады бетін қараңыз.

Маманның тексеруі қашан керек

Тізім жиі кездесетін қателерді табады, бірақ маманды алмастырмайды. Карта нөмірлерін провайдердің хостингтелген төлем бетін қолданбай өзіңіз өңдесеңіз, денсаулық, қаржы немесе балалар деректерін сақтасаңыз, қауіпсіздік сауалнамаларын талап ететін компанияларға сатсаңыз немесе деректер ағып кетсе, қатты зардап шегетін болсаңыз, шолуға ақы төлеуді қарастырыңыз. Кодыңыздың экспортқа ашық болуы мұндай шолуды едәуір жеңілдетеді.

Mythex-те құрастырғанда қауіпсіздік

Mythex қауіпсіздікті сканерлеу панелін қамтымайды, сондықтан жоғарыдағы тізім орындалатын процесс болып табылады. Мына нәрселер көмектеседі:

  • Жоба құпиялары. Кілттерді жоба параметрлерінде → Secrets бөлімінде сақтаңыз немесе агент чатта көрсететін құпиялар карточкасы арқылы, сонда олар кодыңыздан және хабарламалардан тыс болады. Тірі қолданбаның құпиясын өзгерткен соң, қайта жариялаңыз.
  • Plan және Ask режимдері. Агенттен өңдемей-ақ рұқсаттарды тексеруін сұраңыз: «Ask режимінде әр API маршрутын және оның қандай рұқсат тексеруін жасайтынын тізіп беріңіз».
  • /test агентке алдын ала көрініс арқылы пайдаланушы ретінде бірнеше рет басуды тапсырады — 2-бөлімдегі екі аккаунт сынағы үшін пайдалы.
  • Бақылау нүктелері бұзылған өзгерісті кері қайтаруға мүмкіндік береді.

Құжаттамадағы өз қолданбаңызға арналған қауіпсіздік және орта айнымалылары мен құпиялар бөлімдерін оқыңыз. Егер келесі қадамда пайдаланушы аккаунттарын қосатын болсаңыз, қолданбаға кіруді қалай қосу керек бетін оқыңыз.

Сұрақтар

AI арқылы жасалған қолданбалар қауіпсіз емес пе?

Өздігінен емес, бірақ AI құрастырушылары қолданбаның жұмыс істеуіне көбірек назар аударады, ал қауіпсіздік тексерулерін ешкім сұрамаса, оңай ұмытып кетуге болады. Ең жиі кездесетін кемшіліктер — серверде рұқсатты тексерудің болмауы және API кілттерінің браузер оқи алатын жерде тұруы.

AI арқылы жасалған қолданба үшін ең маңызды қауіпсіздік тексеруі қайсы?

Бір пайдаланушы ретінде кіріп, басқа пайдаланушының деректерін көруге немесе өзгертуге тырысыңыз — қолданба беттері арқылы да, URL-дегі ID-лерді өзгерту арқылы да. Мұндай қолжетімділікті бұзу OWASP Top 10:2025 веб-қолданба қауіпсіздігі тізімінде бірінші орында тұр.

AI арқылы жасалған қолданбадағы API кілттерін қайда сақтау керек?

Жоба айнымалыларында немесе құпияларында, тек серверлік код пайдаланатындай етіп. Ақшаны жұмсай алатын немесе жеке деректерді оқи алатын кілттер браузердің кодында, чатта немесе Git репозиторийінде болмауы тиіс.

Іске қосар алдында қауіпсіздік аудиті керек пе?

Төмен тәуекелді деректері бар шағын қолданба үшін осы сияқты тізім бойынша өту — орынды бастама. Егер төлемдерді тікелей өңдесеңіз, денсаулық, қаржы немесе балалар деректерімен жұмыс істесеңіз немесе шартта қауіпсіздік талаптары болса, мұны білікті маманға тексертіңіз.

Mythex · Pricing · ЖИ көмегімен кез келген нәрсені жасаңыз · Сайттар мен қосымшаларға арналған үлгілер · Mythex салыстыруда · ЖИ-мен қосымша жасау сөздігі · ЖИ-мен қосымша жасауға арналған тегін құралдар · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)