FixVibe
Covered by FixVibecritical

SQL инъекциясы: Дерекқорға рұқсатсыз кіруді болдырмау

SQL инъекциясы (SQLi) – шабуылдаушылар қолданбаның дерекқор сұрауларына кедергі жасайтын маңызды осалдық. Зиянды SQL синтаксисін енгізу арқылы шабуылдаушылар аутентификацияны айналып өтіп, құпия сөздер мен несие картасының мәліметтері сияқты құпия деректерді көре алады немесе тіпті негізгі серверді бұза алады.

CWE-89

SQL инъекциясының әсері

SQL инъекциясы (SQLi) шабуылдаушыға қолданба [S1] дерекқорына жасайтын сұрауларға кедергі жасауға мүмкіндік береді. Негізгі әсер пайдаланушы құпия сөздері, несие картасының мәліметтері және жеке ақпарат [S1] сияқты құпия деректерге рұқсатсыз кіруді қамтиды.

Деректерді ұрлаудан басқа, шабуылдаушылар дерекқор жазбаларын жиі өзгерте немесе жоя алады, бұл қолданба әрекетіндегі тұрақты өзгерістерге немесе деректердің жоғалуына [S1] әкеледі. Ауырлығы жоғары жағдайларда, SQLi серверлік инфрақұрылымды бұзу, қызмет көрсетуден бас тарту шабуылдарын қосу немесе ұйымның [S1]ZXCVFIXENVIBETOKEN1ZXCVZXCVFIXVIBETOKEN3ZXVIBETOK жүйелеріне тұрақты бэкдорды қамтамасыз ету үшін күшейтілуі мүмкін.

Түпкі себеп: Қауіпсіз енгізуді өңдеу

SQL инъекциясының негізгі себебі - [S2] SQL пәрменінде қолданылатын арнайы элементтерді дұрыс бейтараптандыру. Бұл қолданба сыртқы әсер ететін енгізуді тікелей [S1][S2] сұрау жолына біріктіру арқылы SQL сұрауларын құрастырған кезде орын алады.

Енгізу сұрау құрылымынан дұрыс оқшауланбағандықтан, дерекқор интерпретаторы пайдаланушы енгізуінің бөліктерін [S2] әріптік деректері ретінде қарастырудың орнына SQL коды ретінде орындауы мүмкін. Бұл осалдық SELECT мәлімдемелерін, INSERT мәндерін немесе UPDATE [S1] мәлімдемелерін қоса, сұраудың әртүрлі бөліктерінде көрінуі мүмкін.

Бетонды түзетулер мен әсерлерді азайту

Параметрленген сұрауларды пайдаланыңыз

SQL инъекциясының алдын алудың ең тиімді жолы - [S1] дайындалған мәлімдемелер деп те белгілі параметрленген сұрауларды пайдалану. Жолдарды біріктірудің орнына әзірлеушілер деректердің және [S2] кодының бөлінуін қамтамасыз ететін құрылымдық механизмдерді пайдалануы керек.

Ең аз артықшылықтар принципі

Қолданбалар [S2] тапсырмалары үшін қажетті ең төменгі артықшылықтарды пайдаланып дерекқорға қосылуы керек. Веб қолданба тіркелгісінде әкімшілік артықшылықтар болмауы керек және оның [S2] функциясына қажетті арнайы кестелермен немесе операциялармен шектелуі керек.

Енгізуді тексеру және кодтау

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

FixVibe оны қалай тексереді

FixVibe қақпасы бар active.sqli сканер модулі арқылы SQL инъекциясын қамтиды. Белсенді сканерлеу тек домен иелігін растаудан және аттестациядан кейін орындалады. Тексеру сұрау параметрлері бар бір шыққан GET соңғы нүктелерін тексеріп шығады, бастапқы жауапты орнатады, SQL-арнайы логикалық аномалияларды іздейді және бірнеше кідіріс ұзындықтары бойынша уақытты растаудан кейін ғана нәтижені хабарлайды. Репозиторийлерді сканерлеу сонымен қатар үлгі интерполяциясымен жасалған өңделмеген SQL қоңырауларын белгілейтін code.web-app-risk-checklist-backfill арқылы түбірлік себепті ертерек анықтауға көмектеседі.