Спосаб CTRL-C у Postgres CLI адмяняе запыты неверагодна хакерскі
Каментарыі
Mewayz Team
Editorial Team
Зацягнуты прывід SIGINT: чаму адмена запыту Postgres CLI падобная на хак
Для распрацоўшчыкаў і адміністратараў баз дадзеных інтэрфейс каманднага радка PostgreSQL (psql) з'яўляецца надзейным штодзённым драйверам. Ён магутны, дакладны і ўсюдыісны. Тым не менш, адзін з самых фундаментальных узаемадзеянняў — адмена неадказнага запыту з дапамогай універсальнага цэтліка CTRL-C — здаецца недарэчным. У адрозненне ад многіх сучасных прыкладанняў, дзе каманда проста спыняе бягучую аперацыю, у psql CTRL-C фактычна не адмяняе запыт на серверы. Замест гэтага ён адмяняе кліентскае чаканне выніку, пакідаючы запыт патэнцыйна скінутым на сервер базы дадзеных. Такія паводзіны не з'яўляюцца памылкай; гэта дызайнерскі артэфакт, які паказвае шматслойную, часам далікатную, архітэктуру нашых інструментаў. Для кампаній, якія будуюць модульныя сістэмы, такія як Mewayz, разуменне гэтых асноўных рэалій з'яўляецца ключом да распрацоўкі надзейных аперацыйных узроўняў, арыентаваных на карыстальніка.
Аповесць пра два працэсы: кліент супраць сервера
Ядро пачуцця "ўзлому" вынікае з архітэктуры psql. Калі вы выконваеце запыт у psql, працуюць два незалежныя працэсы: працэс кліента psql на вашай лакальнай машыне і працэс сервера postgres на хасце базы дадзеных. Націсканне CTRL-C адпраўляе SIGINT (сігнал перапынення) менавіта ў кліенцкі працэс psql. Непасрэдная задача кліента - спыніць чаканне і вярнуцца да падказкі, што ён і робіць. Аднак сервер не мае ўласцівых ведаў аб гэтым кліенцкім сігнале. З яго пункту гледжання, запыт усё яшчэ з'яўляецца сапраўднай, запушчанай аперацыяй. Запыт на адмену павінен быць перададзены як асобная новая інструкцыя.
<цытата> «CTRL-C у psql — гэта не кнопка «стоп», а больш нататка «калі ласка, ігнаруйце маю папярэднюю просьбу», якую вы перадаеце занятаму бібліятэкару, калі яны ўжо на паўдарогі да стосаў».Пратакол адмены: другасны запыт
Такім чынам, як насамрэч адмяняецца запыт? Пасля апрацоўкі SIGINT кліент psql, які добра сябе паводзіць, ініцыюе афіцыйны пратакол адмены PostgreSQL. Гэта прадугледжвае адкрыццё абсалютна новага злучэння з серверам і адпраўку спецыяльнага паведамлення "запыт на адмену", якое змяшчае сакрэтны ключ, які ідэнтыфікуе канкрэтны бэкэнд-працэс, які выконвае ваш запыт. Гэты запыт апрацоўваецца з нізкім прыярытэтам, і няма гарантыі неадкладнага поспеху. Гэты шматэтапны працэс "пажар і забыццё" з'яўляецца прычынай таго, што паводзіны здаецца ўскосным. Гэта не прамое перапыненне; гэта ветлівая асінхронная просьба, адпраўленая праз зваротны канал.
Прабел у карыстальніцкім досведзе і пераважныя выпадкі
Гэты дызайн стварае некалькі адчувальных кропак трэння для карыстальнікаў:
- Заўважная адсутнасць адказу: вы націскаеце CTRL-C, ваш запыт імгненна вяртаецца, але нагрузка на сістэму застаецца высокай, таму што сервер усё яшчэ працуе.
- Нявызначаны вынік: у вас няма неадкладнага пацверджання, калі запыт на адмену быў атрыманы або выкананы серверам.
- Памылка, якая залежыць ад злучэння: Калі сервер абаронены брандмаўэрам або новае злучэнне для запыту на адмену не атрымоўваецца, арыгінальныя салдаты запыту захоўваюцца бясконца.
- Псіхалагічная неадпаведнасць: універсальная каманда "перапыніць" не выконвае сінхронны перапынак, парушаючы чаканні карыстальнікаў, сфарміраваныя ў іншым месцы ў вылічальным асяроддзі.
На аснове ўсвядомленасці з Mewayz
Сучасныя бізнес-аперацыйныя сістэмы павінны абстрагавацца ад гэтых асноўных складанасцей, паважаючы іх абмежаванні. Платформа накшталт Mewayz, якая дзейнічае як модульная бізнес-АС, будзе інкапсуляваць узаемадзеянне з базамі дадзеных у модулях кіраваных паслуг. Напрыклад, модуль запыту даных Mewayz не будзе проста выстаўляць неапрацаваны SQL-запрашэнне; ён ахінуў бы яго зручнымі для карыстальніка элементамі кіравання — праўдзівай кнопкай «стоп», якую можна праверыць, тайм-аўтамі запытаў і панэлямі стану ў рэальным часе, якія паказваюць, што сапраўды працуе на серверы. Гэта перамяшчае вопыт ад барацьбы з асаблівасцямі пратаколу да кіравання зразумелымі, эфектыўнымі бізнес-аперацыямі. Урок CTRL-C у psql заключаецца ў тым, што выдатныя інструменты не проста раскрываюць магутныя магчымасці; яны распрацоўваюць для іх інтуітыўна зразумелыя і надзейныя інтэрфейсы, ператвараючы архітэктурную спадчыну ў бясшвоўны працоўны працэс. Разуменне хака адкрывае магчымасць пабудаваць нешта лепшае.
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →