← speedor.net

Абзорҳои барномасоз

Абзорҳои ройгони онлайн: форматгари JSON, рамзгузории Base64 ва URL, декодери JWT, санҷишгари regex, HEX↔RGB, тамғаи вақти Unix ва рамзҳои HTTP.

Аксари мушкилоти барномасозӣ калону ҷолибанд. Онҳое, ки воқеан шуморо суст мекунанд, чунин нестанд. Шумо посухи API-и фишурдашуда пеши худ доред, JWT-е, ки хонда наметавонед, URL-е, ки сатри дархости худро вайрон мекунад, ва regex-е, ки қариб кор мекунад. Ҳеҷ кадоме аз инҳо ба вобастагӣ, насби CLI ё забонаки пур аз реклама сазовор нест. Онҳо ба сӣ сония ва қуттии матни тоза сазоворанд.

Қуттии абзорҳои браузерӣ барои корҳои хурде, ки кори воқеиро вайрон мекунанд

Аксари мушкилоти барномасозӣ калону ҷолибанд. Онҳое, ки воқеан шуморо суст мекунанд, чунин нестанд. Шумо посухи API-и фишурдашуда пеши худ доред, JWT-е, ки хонда наметавонед, URL-е, ки сатри дархости худро вайрон мекунад, ва regex-е, ки қариб кор мекунад. Ҳеҷ кадоме аз инҳо ба вобастагӣ, насби CLI ё забонаки пур аз реклама сазовор нест. Онҳо ба сӣ сония ва қуттии матни тоза сазоворанд.

Ин тамоми идея дар паси ин маҷмӯа аст: як саҳифаи абзорҳои ройгони барномасоз, ки фавран боргирӣ мешаванд, комилан дар браузери шумо кор мекунанд ва ҳеҷ гоҳ аз шумо бақайдгирӣ намепурсанд. Форматкунии JSON, Base64, рамзгузории URL, декодкунии JWT, табдили ранг, санҷиши regex, ҳисоби вақти дамгоҳ ва маълумотномаи коди ҳолати HTTP ҳама дар як ҷо зиндагӣ мекунанд. Шумо диг аз часпондани маълумоти худ ба ягон чизе, ки Google аввал нишон медиҳад, дасткашед, ва фикр кардан дар бораи он ки оё он сайти тасодуфӣ онро сабт мекунад, бас мешавад.

Ҳар абзор воқеан чӣ иҷро мекунад

Форматкунандаи JSON девори JSON-и як-сатра ва бо экрани иловагиро мегирад ва ба чизе, ки инсон скан карда метавонад, табдил медиҳад. Фарз кунед вебҳуке фаъол мешавад ва логҳои шумо бадани хомро ҳамчун як сатри бузурги ягона забт мекунанд. Онро часпонед, кашиши ду- ё чор-фосилавиро интихоб кунед, ва шумо дарахти хонишавандае мегиред, бо хатогии синтаксисии нишонрасидашуда, агар вуҷуд дошта бошад. Он ҳангоми форматкунӣ санҷиш ҳам мекунад, бинобар ин вергули охирии парешон ё калиди бидуни нохунак ба ҷои шикастани хомушона се қабат дар барномаи шумо, ошкор карда мешавад.

Рамзгузорӣ/декодкунии Base64 асбоби кориест, ки шумо доимо бидуни фикр кардан истифода мебаред. URI-ҳои маълумот, сарлавҳаҳои аутентификатсияи асосӣ, блокҳои дуиро дар файлҳои конфигуратсия печонидашуда, порчаҳои токен — ҳама Base64. Арзиши сарлавҳаро декод кунед, то тасдиқ кунед, ки аломатномаҳо ба тавре ки интизор доред фиристода мешаванд, ё тасвири хурдро рамз кунед, то онро дарунсоз кунед. Он UTF-8-ро тоза коркард мекунад, ки дар лаҳзае ки вуруди шумо ASCII-и оддӣ нест, аҳамият дорад.

Абзори рамзгузорӣ/декодкунии URL хатогии классикиро ислоҳ мекунад, ки дар он параметри дархост фосила, аломати «ва» ё аломати плюсро дар бар мегирад ва хомушона дархости шуморо мешиканад. Агар шумо пайвандро бо даст месозед ва арзиш name=John & Co аст, шумо ба он аломати «ва» бояд ба %26 тағйир диҳед, вагарна сервер онро ҳамчун ҷудокунандаи параметр мехонад. Часпонед, рамз кунед, нусхабардорӣ кунед. Декодкунӣ ба самти дигар кор мекунад, вақте ки шумо ба URL-и сабтшуда, пур аз кодҳои фоиз нигоҳ мекунед ва мехоҳед бифаҳмед, ки чӣ воқеан дархост шудааст.

Қавсҳои абстрактии дурахшон ва сохторҳои маълумоти дарунсохт дар бунафши торик ва фирӯзаранг, ки қуттии абзорҳои барномасозро намояндагӣ мекунанд
Як саҳифа, бисёр корҳои хурд: форматкунӣ, декодкунӣ, табдилдиҳӣ, санҷиш.

Абзори токен, ва як огоҳии муҳим

Декодкунандаи JWT токенро ба се қисми бо нуқта ҷудошуда мешиканад ва сарлавҳа ва боркунандаро ба сифати JSON-и оддӣ нишон медиҳад. Вақте ки шумо аутентификатсияро рафъи хатогӣ мекунед, ин тилло аст: санҷед, ки кадом алгоритм токенро имзо кардааст, sub-ро хонед, тасдиқ кунед, ки даъвои exp ҳанӯз нагузаштааст, ва бидонед, ки дарвозаи шумо мустақим кадом доираҳо ё нақшҳоро ба мизоҷ медиҳад.

Инҷо қисме, ки одамон фаромуш мекунанд. Декодкунии JWT тасдиқ кардани он нест. Боркунанда танҳо Base64url аст — ҳар касе, ки токенро дорад, метавонад ҳар даъворо дар он бихонад, ва ин абзор маҳз ҳамин ва танҳо ҳаминро иҷро мекунад. Он имзоро санҷиш намекунад, бинобар ин токени декодшуда ба шумо мегӯяд, ки токен чӣ мегӯяд, на он ки оё он ҳақиқист. Ҳеҷ гоҳ ба даъвои декодкунанда барои қарори иҷозат бовар накунед; ин кори сервери шумост, бо калиди имзо. Декодкунандаро барои фаҳмидан ва рафъи хатогӣ истифода баред, ҳеҷ гоҳ барои санҷиш.

Санҷандаи regex ҳалқаро дар бораи носоз-тарин абзор мебандад. Намунаи худро нависед, чанд матни намунавӣ дароред, ва бингаред, ки мутобиқатҳо зинда ҳангоми чоп кардани шумо равшан мешаванд. Гурӯҳҳои гирифт номбар шудаанд, бинобар ин шумо тасдиқ карда метавонед, ки гурӯҳи ду воқеан солро мегирад, на тамоми санаро. Он аз давраи таҳрир-захира-иҷрои дубораи санҷиши намуна дар дохили пойгоҳи коди воқеии шумо беҳтар аст, ва роҳи тезест барои омӯхтани он ки чаро миқдорсанҷи ҳарис бештар аз он ки шумо ният доред, мебалъад.

Барои тамом кардан: табдилдиҳандаи HEX↔RGB #1a2b3c-ро ба rgb(26, 43, 60) табдил медиҳад ва баръакс, барои вақтҳое ки нишонаҳои тарроҳии шумо ва CSS-и шумо мувофиқат намекунанд. Табдилдиҳандаи вақти дамгоҳи Unix 1718900000-ро ба сана ва вақти воқеӣ табдил медиҳад, ки шумо инро ҳар вақте ки пойгоҳи маълумот сонияҳои дамгоҳро захира мекунад ва чашмони шумо онро хонда наметавонанд, мехоҳед. Ва маълумотномаи коди ҳолати HTTP шуморо аз тахмин задан наҷот медиҳад, ки оё 422 ё 409 ҷавоби дуруст аст, вақте дархости API норост меравад.

Хатти интиқоли маълумоти API-и абстрактӣ бо панелҳои услуби терминали дурахшон дар баҳрӣ ва тиллоӣ, бидуни матни хонишаванда
Ҳама чиз дар забонаке, ки шумо аллакай кушодаед, кор мекунад.

Коркарди маҳаллӣ, то шумо чизҳои ҳассосро часпонед

Ин қисме аст, ки барои ҳар касе, ки бо маълумоти истеҳсолот кор мекунад, муҳимтарин аст. Ҳар абзори инҷо ба тарафи мизоҷ дар JavaScript кор мекунад. Вуруди шумо ҳеҷ гоҳ аз браузер намебарояд — на боргузорӣ, на рафтуомад ба сервер, ҳеҷ чизи сабтшаванда. Ин маънои онро дорад, ки шумо метавонед токени воқеии дастрасиро барои санҷиши даъвоҳояш часпонед, сарлавҳаи Base64-ро, ки аломатномаро дар бар мегирад, декод кунед, ё посухи API-и пур аз маълумоти мизоҷонро форматкунӣ кунед, бидуни он ки он ҳеҷ гоҳ аз шабака гузарад. Далел мехоҳед? Абзорҳои таҳиягарони худро кушоед, варақи шабакаро тамошо кунед, ва часпонед. Шумо ҳеҷ чизро ба берун рафтан нахоҳед дид. Барои боркунандаҳои ҳассос, абзори танҳо-маҳаллӣ на танҳо хуб аст; ин ягона имконияти масъулиятнок аст.

Саволҳои зуд-зуд пурсидашаванда

Оё ин абзорҳои барномасоз воқеан ройгон ва бидуни бақайдгирианд?

Бале. Ҳар асбоб ройгон аст, ба ҳисоб ниёз надорад, ва маҳдудияти истифода надорад. Саҳифаро кушоед ва корро оғоз кунед.

Оё маълумоти ман ҳангоми истифодаи ин абзорҳо ба сервер фиристода мешавад?

Не. Ҳама чиз ба тарафи мизоҷ дар браузери шумо кор мекунад. Вуруди шумо ҳеҷ гоҳ боргузорӣ намешавад, бинобар ин шумо бо амонат токенҳо, аломатномаҳо ва посухҳои хусусии API-ро часпонида метавонед.

Оё декодкунандаи JWT имзои токенро санҷиш мекунад?

Не. Он танҳо сарлавҳа ва боркунандаро декод мекунад, то шумо даъвоҳоро хонда тавонед. Декодкунӣ санҷиш нест. Санҷиши имзо ба калиди имзо ниёз дорад ва ба сервери шумо тааллуқ дорад.

Фарқи байни рамзгузории Base64 ва рамзбандӣ (encryption) чист?

Base64 рамзгузорист, на рамзбандӣ. Он аз ҷониби ҳар касе комилан баргардонидашаванда аст ва ҳеҷ амниятеро пешниҳод намекунад. Он барои намояндагии маълумоти дуии ҳамчун матн вуҷуд дорад, на барои пинҳон кардани он.

Санҷандаи regex кадом навъи regex-ро дастгирӣ мекунад?

Он муҳаррики ифодаи муназзами JavaScript-ро, ки дар браузери шумо кор мекунад, истифода мебарад, бо равшансозии зиндаи мутобиқат ва хуруҷи гурӯҳи гирифт ҳангоми чоп кардани шумо.

Оё метавонам JSON-и нодурустро форматкунӣ кунам?

Форматкунанда кӯшиш мекунад, ва агар JSON шикаста бошад, он ба макони хатогӣ ишора мекунад ва мегӯяд, ки чӣ нодуруст аст, то шумо онро ислоҳ ва аз нав форматкунӣ карда тавонед.