Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5c162ef

Browse files
committed
more optimization
1 parent 9933edc commit 5c162ef

2 files changed

Lines changed: 8 additions & 0 deletions

File tree

lib/core/common.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
from lib.core.settings import MIN_TIME_RESPONSES
9393
from lib.core.settings import PAYLOAD_DELIMITER
9494
from lib.core.settings import REFLECTED_NON_ALPHA_NUM_REGEX
95+
from lib.core.settings import REFLECTED_MAX_REGEX_PARTS
9596
from lib.core.settings import REFLECTED_VALUE_MARKER
9697
from lib.core.settings import TIME_STDEV_COEFF
9798
from lib.core.settings import DYNAMICITY_MARK_LENGTH
@@ -2596,6 +2597,10 @@ def removeReflectiveValues(content, payload, suppressWarning=False):
25962597
regex = regex.replace(2 * REFLECTED_NON_ALPHA_NUM_REGEX, REFLECTED_NON_ALPHA_NUM_REGEX)
25972598

25982599
if all([part.lower() in content.lower() for part in regex.split(REFLECTED_NON_ALPHA_NUM_REGEX)]): # fast optimization check
2600+
parts = regex.split(REFLECTED_NON_ALPHA_NUM_REGEX)
2601+
if len(parts) > REFLECTED_MAX_REGEX_PARTS: # preventing CPU hogs
2602+
regex = "%s.+?%s" % (REFLECTED_NON_ALPHA_NUM_REGEX.join(parts[:REFLECTED_MAX_REGEX_PARTS/2]), REFLECTED_NON_ALPHA_NUM_REGEX.join(parts[-REFLECTED_MAX_REGEX_PARTS/2:]))
2603+
25992604
retVal = re.sub(regex, REFLECTED_VALUE_MARKER, content, re.I)
26002605

26012606
if retVal != content:

lib/core/settings.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,9 @@
311311
# Regular expression used for marking non-alphanum characters
312312
REFLECTED_NON_ALPHA_NUM_REGEX = r'[^\r\n]+?'
313313

314+
# Maximum number of alpha-numerical parts in reflected regex (for speed purposes)
315+
REFLECTED_MAX_REGEX_PARTS = 10
316+
314317
# Chars which can be used as a failsafe values in case of too long URL encoding value
315318
URLENCODE_FAILSAFE_CHARS = '()|,'
316319

0 commit comments

Comments
 (0)