Спосаб CTRL-C у Postgres CLI адмяняе запыты неверагодна хакерскі | Mewayz Blog Skip to main content
Hacker News

Спосаб CTRL-C у Postgres CLI адмяняе запыты неверагодна хакерскі

Каментарыі

1 min read Via neon.com

Mewayz Team

Editorial Team

Hacker News
<цела>

Зацягнуты прывід 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 →

Часта задаюць пытанні

Зацягнуты прывід SIGINT: чаму адмена запыту Postgres CLI падобная на хак

Для распрацоўшчыкаў і адміністратараў баз дадзеных інтэрфейс каманднага радка PostgreSQL (psql) з'яўляецца надзейным штодзённым драйверам. Ён магутны, дакладны і ўсюдыісны. Тым не менш, адзін з самых фундаментальных узаемадзеянняў — адмена неадказнага запыту з дапамогай універсальнага цэтліка CTRL-C — здаецца недарэчным. У адрозненне ад многіх сучасных прыкладанняў, дзе каманда проста спыняе бягучую аперацыю, у psql CTRL-C фактычна не адмяняе запыт на серверы. Замест гэтага ён адмяняе чаканне кліентам выніку, пакідаючы запыт патэнцыйна адкінутым на сервер базы дадзеных. Такія паводзіны не з'яўляюцца памылкай; гэта дызайнерскі артэфакт, які паказвае шматслойную, часам далікатную, архітэктуру нашых інструментаў. Для кампаній, якія будуюць модульныя сістэмы, такія як Mewayz, разуменне гэтых асноўных рэалій з'яўляецца ключом да распрацоўкі надзейных аперацыйных узроўняў, арыентаваных на карыстальніка.

Аповесць пра два працэсы: кліент супраць сервера

Ядро пачуцця "ўзлому" вынікае з архітэктуры psql. Калі вы выконваеце запыт у psql, працуюць два незалежныя працэсы: працэс кліента psql на вашай лакальнай машыне і працэс сервера postgres на хасце базы дадзеных. Націсканне CTRL-C пасылае SIGINT (сігнал перапынення) спецыяльна кліенцкаму працэсу psql. Непасрэдная задача кліента - спыніць чаканне і вярнуцца да падказкі, што ён і робіць. Аднак сервер не мае ўласцівых ведаў аб гэтым кліенцкім сігнале. З яго пункту гледжання, запыт усё яшчэ з'яўляецца сапраўднай, запушчанай аперацыяй. Запыт на адмену павінен быць перададзены як асобная новая інструкцыя.

Пратакол адмены: другасны запыт

Такім чынам, як насамрэч адмяняецца запыт? Пасля апрацоўкі SIGINT кліент psql, які добра сябе паводзіць, ініцыюе афіцыйны пратакол адмены PostgreSQL. Гэта прадугледжвае адкрыццё зусім новага злучэння з серверам і адпраўку спецыяльнага паведамлення "запыт на адмену", якое змяшчае сакрэтны ключ, які ідэнтыфікуе канкрэтны бэкэнд-працэс, які выконвае ваш запыт. Гэты запыт апрацоўваецца з нізкім прыярытэтам, і няма гарантыі неадкладнага поспеху. Гэты шматэтапны працэс "пажар і забыццё" з'яўляецца прычынай таго, што паводзіны здаецца ўскосным. Гэта не прамое перапыненне; гэта ветлівая асінхронная просьба, адпраўленая праз зваротны канал.

Прабел у карыстальніцкім досведзе і пераважныя выпадкі

Гэты дызайн стварае некалькі адчувальных кропак трэння для карыстальнікаў:

На аснове ўсвядомленасці з Mewayz

Сучасныя бізнес-аперацыйныя сістэмы павінны абстрагавацца ад гэтых асноўных складанасцей, паважаючы іх абмежаванні. Платформа накшталт Mewayz, якая дзейнічае як модульная бізнес-АС, будзе інкапсуляваць узаемадзеянне з базамі дадзеных у кіраваных сэрвісных модулях. Напрыклад, модуль запыту даных Mewayz не будзе проста выстаўляць неапрацаваны SQL-запрашэнне; ён ахінуў бы яго зручнымі для карыстальніка элементамі кіравання — праўдзівай кнопкай «стоп», якую можна праверыць, тайм-аўтамі запытаў і панэлямі стану ў рэальным часе, якія паказваюць, што сапраўды працуе на серверы. Гэта перамяшчае вопыт ад барацьбы з асаблівасцямі пратаколу да кіравання зразумелымі, эфектыўнымі бізнес-аперацыямі. Урок CTRL-C у psql заключаецца ў тым, што выдатныя інструменты не проста раскрываюць магутныя магчымасці; яны распрацоўваюць для іх інтуітыўна зразумелыя і надзейныя інтэрфейсы, ператвараючы архітэктурную спадчыну ў бясшвоўны працоўны працэс. Разуменне хака адкрывае магчымасць пабудаваць нешта лепшае.

Усе вашы бізнес-інструменты ў адным месцы

Спыніце жангляванне некалькімі праграмамі. Mewayz аб'ядноўвае 208 інструментаў усяго за 49 долараў у месяц — ад інвентарызацыі да кадраў, ад браніравання да аналітыкі. Для пачатку крэдытная карта не патрабуецца.

Паспрабуйце Mewayz бясплатна →

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Related Guide

POS & Payments Guide →

Accept payments anywhere: POS terminals, online checkout, multi-currency, and real-time inventory sync.

Start managing your business smarter today

Join 6,208+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 6,208+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime