Возможно ли внедрение кода в тестовую строку RegExp? - PullRequest
2 голосов
/ 23 мая 2019

Возможен ли ввод кода в тестовой строке JavaScript RegExp?

Этот код выполняется на стороне сервера:

const userInput = "..."; // user input provided by client
const match = new RegExp(regex, "i").test(userInput);

regex является статическим и находится на стороне сервера. Только строка userInput - это то, что мы не можем контролировать, пользователь может вводить что угодно.

Возможно ли для злоумышленника ввести код или это можно безопасно обработать методами JS RegExp?

Ответы [ 2 ]

3 голосов
/ 23 мая 2019

Это безопасно, если только в движке JavaScript, выполняющем регулярное выражение, нет очень специфической уязвимости (переполнение буфера и т. Д.), Что очень маловероятно , но не совсем невозможно.

1 голос
/ 23 мая 2019

new RegExp(...).test(userInput) защищен от уязвимостей внедрения, но это вектор отказа в обслуживании (ReDoS).

«Просмотр регулярных выражений в приложении» объясняет, как проверить регулярное выражение, чтовы получили с сервера.

...