What is safe-regex?
The safe-regex package is a utility for checking if a given regular expression is safe and not susceptible to ReDoS (Regular Expression Denial of Service) attacks. It evaluates the complexity of regular expressions and determines if they can potentially cause exponential time complexity issues.
What are safe-regex's main functionalities?
Safety Check
This feature allows developers to check if a regular expression is safe to use, preventing potential ReDoS attacks. The function returns a boolean indicating whether the regex is considered safe.
const safeRegex = require('safe-regex');
const regex = /a+$/;
console.log(safeRegex(regex)); // Outputs: true or false depending on the safety
Other packages similar to safe-regex
vuln-regex-detector
This package is similar to safe-regex as it also checks for potentially vulnerable regular expressions that could lead to ReDoS attacks. It provides a more comprehensive analysis and supports asynchronous API, making it suitable for larger applications compared to safe-regex.
regex-safe
Like safe-regex, regex-safe is designed to ensure that regular expressions are safe from ReDoS attacks. It offers a simple API to validate regex patterns but does not provide the detailed analysis or support for asynchronous operations found in some other packages.
safe-regex
Detect potentially
catastrophic
exponential-time
regular expressions by limiting the
star height to 1.
WARNING: This module has both false positives and false negatives.
Use vuln-regex-detector for improved accuracy.
Example
var safe = require('safe-regex');
var regex = process.argv.slice(2).join(' ');
console.log(safe(regex));
$ node safe.js '(x+x+)+y'
false
$ node safe.js '(beep|boop)*'
true
$ node safe.js '(a+){10}'
false
$ node safe.js '\blocation\s*:[^:\n]+\b(Oakland|San Francisco)\b'
true
Methods
const safe = require('safe-regex')
const ok = safe(re, opts={})
Return a boolean ok
whether or not the regex re
is safe and not possibly
catastrophic.
re
can be a RegExp
object or just a string.
If the re
is a string and is an invalid regex, returns false
.
opts.limit
- maximum number of allowed repetitions in the entire regex.
Default: 25
.
Install
With npm do:
npm install safe-regex
Versioning
This project follows Semantic Versioning 2.0 (semver).
Here are the project-specific meanings of MAJOR, MINOR, and PATCH updates:
- MAJOR: "Incompatible" API changes were introduced. There are two types in this module:
- Changes that modify the interface
- Changes that cause any regexes to be marked as unsafe that were formerly marked as safe
- MINOR: Functionality was added in a backwards-compatible manner. There are two types in this module:
- Refactoring the analyses but not changing their results
- Modifying the analyses to reduce false positives, without affecting negatives (false or true)
- PATCH: I don't anticipate using PATCH for this module
License
MIT