Параметраваны SQL, таксама вядомы як падрыхтаваныя аператары, - гэта метад, які выкарыстоўваецца ў распрацоўцы вэб-прыкладанняў для памяншэння ўразлівасцяў SQL-ін'екцый. Гэта прадугледжвае выкарыстанне запаўняльнікаў у SQL-запытах, якія пазней замяняюцца значэннямі, прадастаўленымі карыстальнікам. Аддзяляючы логіку запыту ад уводу карыстальніка, параметрызаваны SQL дапамагае прадухіліць выкананне шкоднаснага кода SQL.
Калі вэб-прыкладанне выкарыстоўвае параметрызаваны SQL, SQL-запыт спачатку рыхтуецца серверам прыкладанняў перад уключэннем уводу карыстальніка. Запыт адпраўляецца на сервер базы дадзеных з запаўняльнікамі для значэнняў, якія прадстаўляюцца карыстальнікам. Гэтыя запаўняльнікі звычайна прадстаўлены знакамі пытання або названымі параметрамі. Затым сервер базы дадзеных кампілюе і аптымізуе запыт без уліку фактычных значэнняў.
Пасля падрыхтоўкі запыту ўвод карыстальніка прывязваецца да запаўняльнікаў, замяняючы іх адпаведнымі значэннямі. Працэс прывязкі гарантуе, што ўвод карыстальніка разглядаецца як даныя, а не як выканальны код. Такое раздзяленне логікі запыту і ўводу карыстальніка прадухіляе атакі SQL-ін'екцый, таму што сервер базы дадзеных ведае, што ўвод карыстальніка павінен інтэрпрэтавацца як даныя, а не як частка структуры запыту.
Выкарыстоўваючы параметрізаваны SQL, вэб-праграмы могуць эфектыўна зніжаць уразлівасці SQL-ін'екцый. Вось некаторыя ключавыя перавагі гэтага падыходу:
1. Абарона ад укаранення SQL: параметрізаваны SQL гарантуе, што ўвод карыстальніка разглядаецца як даныя, выключаючы магчымасць укаранення шкоднаснага кода SQL. Паколькі ўвод карыстальніка разглядаецца як значэнне, нават калі ён змяшчае спецыяльныя сімвалы або сінтаксіс SQL, ён не будзе інтэрпрэтавацца як частка структуры запыту.
Напрыклад, разгледзім наступны ўразлівы SQL-запыт без параметрызацыі:
SELECT * FROM users WHERE username = 'admin' AND password = '<user_input>';
Зламыснік можа выкарыстаць гэты запыт, увёўшы `' АБО '1'='1' –` у якасці ўводу карыстальніка, фактычна абыходзячы праверку пароля. Аднак, выкарыстоўваючы параметрызаваны SQL, запыт будзе выглядаць так:
SELECT * FROM users WHERE username = 'admin' AND password = ?;
Карыстальніцкі ўвод прывязаны да запаўняльніка, прадухіляючы любыя спробы ўкаранення SQL.
2. Палепшаная прадукцыйнасць: параметрызаваныя запыты SQL можна падрыхтаваць адзін раз і выканаць некалькі разоў з рознымі значэннямі. Гэта памяншае накладныя выдаткі на разбор і аптымізацыю запыту пры кожным яго выкананні. Падрыхтаваныя заявы могуць кэшавацца серверам базы дадзеных, што прыводзіць да паляпшэння прадукцыйнасці для часта выконваемых запытаў.
3. Прадухіленне сінтаксічных памылак: параметрізаваны SQL дапамагае прадухіліць сінтаксічныя памылкі, выкліканыя няправільна адфарматаваным уводам карыстальніка. Сервер базы дадзеных разглядае ўвод карыстальніка як даныя, гарантуючы, што яны не ўмешваюцца ў структуру запыту.
4. Абстракцыя базы даных: параметрізаваны SQL дазваляе лепш абстрагавацца ад базы даных, паколькі коду прыкладання не трэба ведаць спецыфічны сінтаксіс або структуру асноўнай базы даных. Гэта палягчае пераключэнне паміж рознымі сістэмамі баз дадзеных без змены логікі прыкладання.
Параметраваны SQL - гэта магутная тэхніка для ліквідацыі ўразлівасцяў SQL-ін'екцый у вэб-прыкладаннях. Аддзяляючы логіку запыту ад уводу карыстальнікам і разглядаючы ўведзеныя карыстальнікам значэнні як даныя, параметрызаваны SQL забяспечвае надзейную абарону ад атак SQL-ін'екцый. Яго перавагі ўключаюць абарону ад укаранення SQL, палепшаную прадукцыйнасць, прадухіленне сінтаксічных памылак і лепшую абстракцыю базы дадзеных.
Іншыя апошнія пытанні і адказы адносна Асновы бяспекі вэб-прыкладанняў EITC/IS/WASF:
- Што такое загалоўкі запытаў на выбарку метададзеных і як іх можна выкарыстоўваць для адрознення паміж запытамі аднолькавага паходжання і міжсайтавымі запытамі?
- Як давераныя тыпы памяншаюць паверхню атакі вэб-праграм і спрашчаюць праверку бяспекі?
- Якая мэта палітыкі па змаўчанні ў давераных тыпах і як яе можна выкарыстоўваць для ідэнтыфікацыі небяспечных прызначэнняў радкоў?
- Які працэс стварэння аб'екта давераных тыпаў з дапамогай API давераных тыпаў?
- Як дырэктыва давераных тыпаў у палітыцы бяспекі змесціва дапамагае паменшыць уразлівасці міжсайтавага сцэнарыя (XSS) на аснове DOM?
- Што такое давераныя тыпы і як яны ліквідуюць уразлівасці XSS на аснове DOM у вэб-праграмах?
- Як палітыка бяспекі кантэнту (CSP) можа дапамагчы паменшыць уразлівасці міжсайтавых сцэнарыяў (XSS)?
- Што такое падробка міжсайтавых запытаў (CSRF) і як яе могуць выкарыстоўваць зламыснікі?
- Як уразлівасць XSS у вэб-праграме парушае даныя карыстальніка?
- Якія два асноўныя класы ўразлівасцяў звычайна сустракаюцца ў вэб-праграмах?
Больш пытанняў і адказаў глядзіце ў раздзеле "Асновы бяспекі вэб-прыкладанняў" EITC/IS/WASF