async_rex.js �.D� V �"�� V const { Worker, isMainThread, workerData, parentPort } = require('worker_threads') if (isMainThread) { class AsyncRex { constructor (pattern, flags) { if (pattern instanceof RegExp) { this.source = pattern.source this.flags = pattern.flags } else if (typeof pattern === 'string') { this.source = pattern this.flags = flags } else { throw new TypeError('The "pattern" argume
先日、このようなツイートを書いたところ、かなりの反響がありました。 JavaScript の正規表現の脆弱性の例でいうと、例えば /\s+$/ は脆弱性があると言える console.time(); /\s+$/.test(" ".repeat(65536) + "a"); console.timeEnd(); 結構時間がかかるのがわかる。でも /\s+$/ を見て「これは危険だな」と理解出来る人はそんなにいない。JavaScript に限らないけれど。 — Takuo Kihira (@tkihira) February 17, 2022 これは一般に ReDoS (Regular expression Denial of Service) と呼ばれる脆弱性です。正確に理解するのが難しい脆弱性なので、少し解説してみたいと思います。 結論 長い記事になるので、最初に「とりあえずこれだけ知っ
IntroductionThis post is intended as a “technical two-pager” to summarize a security vulnerability called Regex-based Denial of Service (AKA Regex DoS, ReDoS). There are a variety of write-ups about ReDoS, but I’m not aware of a good one-stop-shop with a higher-level treatment of all aspects of the subject. I have included links at the end to more detailed treatments. I have used headings liberall
Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...) Russ Cox rsc@swtch.com January 2007 Introduction This is a tale of two approaches to regular expression matching. One of them is in widespread use in the standard interpreters for many languages, including Perl. The other is used only in a few places, notably most implementations of awk and grep.
ReDoS とは、Regular expression Denial of Service の略称で脆弱な正規表現を利用することで起こる DoS のひとつです。 正規表現は利用者からの入力値の検証など色々な場面で利用されていますが、正規表現の記述は難しく、誤った記述をしてしまうと ReDoS の影響を受ける恐れがあります。 本記事では ReDoS の概要から対策方法まで解説していきます。 ReDoS とは メールアドレスや電話番号の入力が正しい形式になっているかどうかを確認するために正規表現を使うことがあると思います。 複雑な形式をマッチさせる正規表現を正しく書くことは難しく、書き方によっては処理に時間がかかることがあります。 ReDoS は、正規表現が使われている部分において、正規表現エンジンに対して処理時間が多くかかる入力を与えることでサービス停止が起こる脆弱性です。 Freezing
0 と 1 だけで話す種族 その国の種族は 0 と 1 だけで構成されたアルファベットを使って話しているとしよう。 ただ、0 と 1 をめちゃめちゃに並べて話してもお互いに意味は通じないから、意味のある言葉にするには、0 と 1 をある規則で並べて話す。 (ここに書いた文章だってそうなってる。日本語という言語の中からひとつひとつの文字を日本語の文法に則って並べてるから、僕の言葉はあなたに通じている。これから話を進める種族の言語体系は、日本語みたいに複雑で無数にある文字の組み合わせじゃなくて、もっともっと単純に 0 と 1 だけを文字として使っているというだけだ。) さて、この種族の脳みその中を覗いてみよう。 彼らが「りんご」という意味の言葉を表すときに「001」という文字の並びを使うとする。 つまり話の中で「001」という並びに出会ったら、それを「りんご」と認識できるというわけだ。 言い換
今日は Regex Festa の日です Regex Festa に来ていますので、自分のためのメモを残しておきます。 挨拶 wi-fiとお手洗い、喫煙所の案内 Opt Technologies さんについて QRコード読むとアンケートあります いろいろな正規表現、いろいろなオートマトン / @sinya8282 さん 正規表現は好きだが、難しい面も面白い面もある 学部の頃は世界最速のgrepを書いてたりした 院では学術よりな研究 Shibuya.pm#16 が正規表現オンリーなイベントだった 東京素晴らしい! 8年の時を経て復活 正規言語の魅力 オートマトンという単純な計算モデル 台数モデル、トポロジー、論理、文法、最小不動点、といった多用な特徴づけ いろいろな道具が使える 効率的なマッチングにオートマトンやモノイドは役に立っている 正規表現は難しい 曖昧性とキャプチャ 講義ではオートマ
Python で正規表現を書いて分析や機械学習のモデル構築、予測に活用する際には、正規表現実行時のパフォーマンスが足かせとなる場合があります。 正規表現の処理に用いられる実行時間がどのくらいになるかはテキストデータの分量や機械学習モデルの精度検証の実行回数に応じて変わってきます。 一つのテキストデータに対する正規表現の実行時間を少なくすることで、タスクによっては全体として大幅な処理時間の短縮が見込まれます。そのことによって精度検証を素早く回したり、テキスト処理実行時の前処理の実行時間を削減する等の効果が得られます。精度検証の間の実行待ち時間やバッチ・キューによる予測時の時間が減り、最終的には精度向上の機会の向上やサービスのユーザ体験の向上に繋がるというわけです。 本記事では Python を用いた場合の正規表現のパフォーマンス改善候補についてリストアップし、具体的な対応方法について見ていき
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く