Su'e uma regex matches sa masani lava O(n²)
Fa'amatalaga
Mewayz Team
Editorial Team
O le Tau Natia o Mamanu Faafetaui
Mo tagata atiae, o fa'amatalaga masani (regex) ose meafaigaluega e mana'omia, o se naifi a le Swiss Army mo le fa'avasegaina, fa'amaonia, ma le su'eina o fa'amatalaga mai tusitusiga. Mai le siakiina o faʻailoga imeli i le suʻeina o faʻamaumauga mai ogalaau, regex o le alu-i fofo. Ae ui i lea, i lalo ifo o lenei mata malosi o loʻo taoto ai se mailei faʻatinoga na faʻalavelaveina ai faiga mo le tele o tausaga: o le taimi sili ona leaga o le lavelave o le suʻeina o afitusi uma i se manoa o le O(n²). Ole lavelave ole taimi fa'afa'afa'afaina ole fa'aupuga a'o fa'atupu fa'asolo le manoa fa'aulu, ole taimi fa'agaioiga e mafai ona fa'atupula'ia fa'atuputeleina, e o'o atu ai i fa'aletonu fa'afuase'i, vaivai puna'oa, ma se mea e ta'ua o leReDoS(Regular Expression Denial of Service). O le malamalama i lenei tapula'a masani o le laasaga muamua lea i le fausiaina o ni talosaga sili atu ona malosi ma lelei.
Aisea ua fetaui ai le Regex O(n²)? Le Fa'afitauli o le Tu'u i tua
O le a'a o le O(n²) lavelave o lo'o taoto i le faiga o lo'o fa'aogaina e masini fa'aleaganu'u masani: backtracking. Pe a taumafai se afi regex, pei o le tasi i Perl, Python, poʻo Java, e suʻe uma fetaui talafeagai, e le naʻo le suʻeina o le manoa e tasi. E su'esu'e ala eseese. Mafaufau i se mamanu faigofie e pei o le `(a+)+b` fa'aoga i se manoa o le tele o le "a", pei o le "aaaaaaaac". O le afi e fa'afetaui ma le matape'ape'a uma "a" ma le 'a+' muamua, ona taumafai lea e fa'afetaui le "b" mulimuli. A le manuia, e toe fo'i i tua—e le fetaui ma le "a" mulimuli ma taumafai le `+` quantifier i le vaega i fafo. O lenei faiga e toe fai, faʻamalosia le afi e faʻataʻitaʻi soʻo se tuʻufaʻatasiga talafeagai o le auala e mafai ai ona faʻapipiʻiina le "a", e oʻo atu ai i se paʻu tuʻufaʻatasia o avanoa. Ole numera o ala e tatau ona su'esu'eina e le afi e mafai ona fa'atatau ile sikuea ole umi ole manoa, o lea O(n²).
- Fa'afuainumera Matape'ape'a: O mamanu pei o le `.*` po'o le `.+` e fa'aaogaina le tele o tusitusiga i le taimi muamua, e o'o atu ai i le tele o le solomuli pe a le fetaui vaega mulimuli o le mamanu.
- Numera Fa'aputu: Fa'aaliga e pei o le `(a+)+` po'o le `(a*a*)*` e fa'atupuina ai se numera fa'atele o auala e vaelua ai le manoa fa'aulu, ma fa'ateleina ai le taimi e fai ai.
- Mamanu Fa'alilolilo: A mafai ona fa'afetaui se manoa i ni auala felavasa'i se tele, e tatau i le afi ona siaki avanoa ta'itasi e su'e ai fa'atusa uma.
O le Aafiaga Moni i le Lalolagi: E sili atu nai lo na'o le fa'agesegese
E le na'o se popolega tau a'oa'oga. O le le lelei o le regex e mafai ona i ai ni a'afiaga ogaoga i siosiomaga gaosiga. O se siaki fa'amaonia fa'amatalaga e foliga mai e le afaina e mafai ona avea ma fa'amau pe a fa'agaioi faila tetele po'o le tagofiaina o voluma maualuga o fa'aoga a tagata fa'aoga. O le taunuuga sili ona mataʻutia o se osofaʻiga a le ReDoS, lea e tuʻuina atu ai e se tagata fai mea leaga se manoa faʻaeteete e faʻaosoina ai le sili ona leaga o le faʻatinoga i le regex a le upega tafaʻilagi, tautau lelei le server ma le avanoa i tagata faʻaoga tatau. Mo pisinisi, e fa'aliliu sa'o i le taimi fa'aletonu, leiloa o tupe maua, ma le ta'uleleia. Pe a fauina faiga lavelave, aemaise lava i latou e fa'agaioia fa'amaumauga e le talitonuina, o le nofouta i nei fa'alavelave fa'aletulafono o se vaega taua tele o le saogalemu ma le su'eina o fa'atinoga.
"Sa i ai se matou fa'afouga la'ititi la'ititi lea na fa'afeiloa'i ai se regex e fa'avasega ai laina fa'aoga-agent. I lalo o le uta masani, e lelei. Ae i le taimi o le fa'atuputeleina o le ta'avale, na mafua ai le fa'aletonu o le ta'avale lea na fa'aumatia ai la matou API mo ni minute. - O se Inisinia Sinia DevOps
Fausia Faiga Atamai ma Mewayz
O lea la, e fa'afefea ona tatou aga'i i tua atu o lenei fa'alavelave fa'avae? O le fofo e aofia ai le tuʻufaʻatasia o meafaigaluega sili atu ma sili atu le atamai faʻataʻitaʻiga filifiliga. Muamua, e mafai e le au atinaʻe ona faʻaogaina le suʻesuʻeina o le regex e faʻamaonia ai faʻafitauli faʻafitauli ma toe tusi ina ia sili atu le lelei (faʻataʻitaʻiga, faʻaaogaina quantifiers poʻo vaega atomika). Mo le fa'atinoga sili, o lo'o i ai isi algorithms e fa'amautinoa ai le taimi fa'ailo, O(n), mo le fa'atusaina o mamanu, e ui e le masani ai i faletusi masani.
O le mea lea e maua ai e le OS pisinisi faʻapitoa e pei o Mewayz se avanoa taua. Mewayz fa'atagaina oe e fa'avasega ma mata'itu faiga fa'apitoa. Nai lo le i ai o se talosaga monolithic lea e mafai ai e se regex faʻagesegese tasi ona pipili le faiga atoa, e mafai ona e faʻapipiʻiina se microservice tuʻufaʻatasia mo le faʻavasegaina o faʻamatalaga ma le faʻamaonia. Afai e tula'i mai se fa'afitauli fa'atino, o lo'o iai ma e mafai ona fo'ia e aunoa ma le a'afiaina o isi fa'agaioiga pisinisi. E le gata i lea, o mea faigaluega mataʻituina i totonu o le Mewayz platform e mafai ona fesoasoani ia te oe e faʻamaonia ai nei faʻaletonu aʻo leʻi aʻafia au tagata faʻatau, liliu se faʻalavelave faʻalavelave i se galuega faʻaleleia lelei. E ala i le fauina i luga o se faavae fetuutuuna'i ma mata'ituina, e te fa'amautinoaina o lo'o tumau pea le fa'atinoina ma le maufetu o au pisinisi, e aofia ai ma le fa'aogaina o tusitusiga lavelave.
💡 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 →Fesili e Fai soo
O le Tau Natia o Mamanu Faafetaui
Mo tagata atiae, o fa'amatalaga masani (regex) ose meafaigaluega e mana'omia, o se naifi a le Swiss Army mo le fa'avasegaina, fa'amaonia, ma le su'eina o fa'amatalaga mai tusitusiga. Mai le siakiina o faʻailoga imeli i le suʻeina o faʻamaumauga mai ogalaau, regex o le alu-i fofo. Ae ui i lea, i lalo ifo o lenei mata malosi o loʻo taoto ai se mailei faʻatinoga na faʻalavelaveina ai faiga mo le tele o tausaga: o le taimi sili ona leaga o le lavelave o le suʻeina o afitusi uma i se manoa o le O(n²). Ole lavelave ole taimi fa'afa'afa'afa'a, a'o fa'atupu fa'asolo le manoa fa'aulu, e mafai ona fa'atupula'ia le taimi fa'agaioiga, e o'o atu ai i fa'aletonu fa'afuase'i, vaivai puna'oa, ma se mea e ta'ua o le ReDoS (Regular Expression Denial of Service). O le malamalama i lenei tapula'a masani o le laasaga muamua lea i le fausiaina o ni talosaga sili atu ona malosi ma lelei.
Aisea ua fetaui ai le Regex O(n²)? Le Fa'afitauli o le Tu'u i tua
O le a'a o le O(n²) lavelave o lo'o taoto i le faiga o lo'o fa'aogaina e masini fa'aleaganu'u masani: backtracking. Pe a taumafai se afi regex, pei o le tasi i Perl, Python, poʻo Java, e suʻe uma fetaui talafeagai, e le naʻo le suʻeina o le manoa e tasi. E su'esu'e ala eseese. Mafaufau i se mamanu faigofie e pei o le `(a+)+b` fa'aoga i se manoa o le tele o le "a", pei o le "aaaaaaaac". O le afi e fa'afetaui ma le matape'ape'a uma "a" ma le 'a+' muamua, ona taumafai lea e fa'afetaui le "b" mulimuli. A le manuia, e toe fo'i i tua—e le fetaui ma le "a" mulimuli ma taumafai le `+` quantifier i le vaega i fafo. O lenei faiga e toe fai, faʻamalosia le afi e faʻataʻitaʻi soʻo se tuʻufaʻatasiga talafeagai o le auala e mafai ai ona faʻapipiʻiina le "a", e oʻo atu ai i se paʻu tuʻufaʻatasia o avanoa. Ole numera o ala e tatau ona su'esu'eina e le afi e mafai ona fa'atatau ile sikuea ole umi ole manoa, o lea O(n²).
O le Aafiaga Moni i le Lalolagi: E sili atu nai lo na'o le fa'agesegese
E le na'o se popolega tau a'oa'oga. O le le lelei o le regex e mafai ona i ai ni a'afiaga ogaoga i siosiomaga gaosiga. O se siaki fa'amaonia fa'amatalaga e foliga mai e le afaina e mafai ona avea ma fa'amau pe a fa'agaioi faila tetele po'o le tagofiaina o voluma maualuga o fa'aoga a tagata fa'aoga. O le taunuuga sili ona mataʻutia o se osofaʻiga a le ReDoS, lea e tuʻuina atu ai e se tagata fai mea leaga se manoa faʻaeteete e faʻaosoina ai le sili ona leaga o le faʻatinoga i le regex a le upega tafaʻilagi, tautau lelei le server ma le avanoa i tagata faʻaoga tatau. Mo pisinisi, e fa'aliliu sa'o i le taimi fa'aletonu, leiloa o tupe maua, ma le ta'uleleia. Pe a fauina faiga lavelave, aemaise lava i latou e fa'agaioia fa'amaumauga e le talitonuina, o le nofouta i nei fa'alavelave fa'aletulafono o se vaega taua tele o le saogalemu ma le su'eina o fa'atinoga.
Fausia Faiga Atamai ma Mewayz
O lea la, e fa'afefea ona tatou aga'i i tua atu o lenei fa'alavelave fa'avae? O le fofo e aofia ai le tuʻufaʻatasia o meafaigaluega sili atu ma sili atu le atamai faʻataʻitaʻiga filifiliga. Muamua, e mafai e le au atinaʻe ona faʻaogaina le suʻesuʻeina o le regex e faʻamaonia ai faʻafitauli faʻafitauli ma toe tusi ina ia sili atu le lelei (faʻataʻitaʻiga, faʻaaogaina quantifiers poʻo vaega atomika). Mo le fa'atinoga sili, o lo'o i ai isi algorithms e fa'amautinoa ai le taimi fa'ailo, O(n), mo le fa'atusaina o mamanu, e ui e le masani ai i faletusi masani.
Fausia Lau Pisinisi OS i Aso Nei
Mai tagata tuto'atasi i lala sooupu, Mewayz fa'aola le 138,000+ pisinisi fa'atasi ma le 208 fa'atasi. Amata fua, fa'aleleia pe a e tuputupu a'e.
Fau se Teugatupe Saoloto →We use cookies to improve your experience and analyze site traffic. Cookie Policy