Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
> So if the pattern is read from a file or database this isn't an issue.

As I said "In the latter case" of general vulnerabilities, these are some issues to be aware of.

The OP said

> > These regexes are in the dozens, and are scattered across several scripts and libraries.

> > maintenance of these mappings is easier.

I doubt the general case can be solved with a DB of simple strings. Maintainable regexes are composed of smaller ones by interpolation and dynamic compilation. Which brings us back to start.

> is only allowed within the scope of use re 'eval';

with "newer" Perls yes. I noticed that you changed it around 2013, and am thankful for that. *

> The third one is a genuine issue, in terms of both CPU and memory usage.

well some regex engines optimize sometimes better than Perl's.

I remember a demo of a case with nested quantifiers where unix' grep did very well and Perl waited for the end of times.

This could be eased by analyzing the regex for potential traps like listed here and warning accordingly.

This analyze could be done by parsing the compilation with re 'debug'; °

But again this could open the door for those general vulnerabilities, that's why I prefer to point to them.

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

°) for completeness TheDamian published a static parser for perl regexes, I can't tell how closely it incorporates new features.

*) Some IDEs do perl -c on default when they open a perl file. Sending a troyan script with a evil BEGIN block will execute instantly after opening. And obfuscation with Acme::EyeDrops will still allow hiding the evil logic into a regex, one just needs to add use re 'eval'; for newer Perls


In reply to Re^3: Is it safe to use external strings for regexes? by LanX
in thread Is it safe to use external strings for regexes? by stevieb

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (3)
As of 2024-04-20 03:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found