Redos ( Regular expression Denial of Service ) 대응관련 모듈
1. Redos ( Regular expression Denial of Service )의 정의 및 대응방안
- 역추적 알고리즘 기반으로된 정규식의 취약점을 이용하여 서버의 자원을 상당부분 차지하여 서버를 마비시키는 공격
- 역추적 알고리즘 기반의 정규식이 아닌 automata 알고리즘을 사용한 google re2 사용 권장
2. google re2 특징
- Re2는 automata 이론을 사용하여 정규식 입력 검색에서 선형시간에 실행되도록 보장
- 메모리 제한을 구현하여 정규식 검색시 한정된 메모리 양으로 제한
=> 정규식인해 서버다운될 일이 없을것 같습니다.
3. 설치
설치법은 간단합니다.
[code]
npm install --save re2
[/code]
4. 사용법
[code]
var RE2 = require("re2");
// with default flags
var re = new RE2("a(b*)");
var result = re.exec("abbc");
console.log(result[0]); // "abb"
console.log(result[1]); // "bb"
result = re.exec("aBbC");
console.log(result[0]); // "a"
console.log(result[1]); // ""
// with explicit flags
re = new RE2("a(b*)", "i");
result = re.exec("aBbC");
console.log(result[0]); // "aBb"
console.log(result[1]); // "Bb"
// from regular expression object
var regexp = new RegExp("a(b*)", "i");
re = new RE2(regexp);
result = re.exec("aBbC");
console.log(result[0]); // "aBb"
console.log(result[1]); // "Bb"
// from regular expression literal
re = new RE2(/a(b*)/i);
result = re.exec("aBbC");
console.log(result[0]); // "aBb"
console.log(result[1]); // "Bb"
// from another RE2 object
var rex = new RE2(re);
result = rex.exec("aBbC");
console.log(result[0]); // "aBb"
console.log(result[1]); // "Bb"
// shortcut
result = new RE2("ab*").exec("abba");
// factory
result = RE2("ab*").exec("abba");
[/code]
참고 링크1 : https://github.com/uhop/node-re2/
참고 링크2 : https://github.com/google/re2
참고 링크3 : https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS
참고 링크:4 : https://techxplore.com/news/2021-08-high-performance-tool-redos-vulnerability.html
참고 링크5 : https://stackoverflow.com/questions/37378330/how-to-trigger-regex-denial-of-service-in-php
번외 PHP Redos 관련 링크 : https://www.codetd.com/en/article/7672378
게시판 목록
개발자팁
질문은 QA에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 4976 | 기타 | 5년 전 | 2118 | ||
| 4975 | 웹서버 |
nooree
|
5년 전 | 2762 | |
| 4974 | node.js |
younhoso
|
5년 전 | 2135 | |
| 4973 | PHP |
|
5년 전 | 3638 | |
| 4972 | 기타 |
younhoso
|
5년 전 | 2260 | |
| 4971 | JavaScript | 6년 전 | 2488 | ||
| 4970 | 웹서버 | 6년 전 | 4120 | ||
| 4969 | JavaScript |
|
6년 전 | 2783 | |
| 4968 | JavaScript |
|
6년 전 | 1932 | |
| 4967 | JavaScript |
younhoso
|
6년 전 | 2041 | |
| 4966 | JavaScript |
|
6년 전 | 2114 | |
| 4965 | PHP |
|
6년 전 | 2104 | |
| 4964 | 기타 | 6년 전 | 2919 | ||
| 4963 | JavaScript | 6년 전 | 2088 | ||
| 4962 | JavaScript | 6년 전 | 2285 | ||
| 4961 | jQuery |
아이티몬스
|
6년 전 | 2094 | |
| 4960 | PHP | 6년 전 | 2738 | ||
| 4959 | 기타 | 6년 전 | 2566 | ||
| 4958 | PHP |
아이티몬스
|
6년 전 | 4576 | |
| 4957 | 기타 | 6년 전 | 2094 | ||
| 4956 | 정규표현식 |
하늘위의길
|
6년 전 | 2321 | |
| 4955 | 정규표현식 |
하늘위의길
|
6년 전 | 2674 | |
| 4954 | 웹서버 |
하늘위의길
|
6년 전 | 4138 | |
| 4953 | PHP | 6년 전 | 2524 | ||
| 4952 | PHP |
몰라무서워
|
6년 전 | 3212 | |
| 4951 | MySQL | 6년 전 | 4129 | ||
| 4950 | jQuery | 6년 전 | 3612 | ||
| 4949 | node.js | 6년 전 | 2678 | ||
| 4948 | node.js | 6년 전 | 2402 | ||
| 4947 | node.js | 6년 전 | 2647 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기