php - www - regex 체크




사용자의 RegEx를 사용해도 안전합니까? (2)

보안은 사용자 입력을 절대 신뢰해서는 안되기 때문에 입력 내용에 따라 다릅니다. 주어진 경우에 사용자 입력에서 사용 된 구분 기호 (백 슬래시)를 이스케이프 처리하여 정규식이 작동하는지 확인해야합니다.

RegEx 를 사용하여 사용자가 텍스트를 검색 할 수 있도록 내 웹 사이트에 기능을 추가하고 싶습니다. 그러나 사용자가 그렇게 할 수있게하는 것이 안전할까요?

preg_match('/' . $user_input_regex . '/', $subject);

ReDoS 공격 (Regular expression Denial of Service)이라는이 코드에 대한 공격 가능성이 있습니다.

Regular Expression Denial of Service (ReDoS)는 대부분의 정규 표현식 구현이 매우 느리게 작동하도록하는 극단적 인 상황 (입력 크기와 기하 급수적으로 관련됨)에이를 수 있다는 사실을 악용 한 서비스 거부 공격입니다. 그런 다음 공격자는 정규 표현식을 사용하여 프로그램이 이러한 극단적 인 상황을 입력 한 다음 매우 오랫동안 기다릴 수 있습니다.

특히 preg_match 에는 PHP Segmentation Fault가 발생할 수있는 알려진 문제 가 있습니다.

따라서 대답은 '아니요'와 같은 문제로 인해 안전하지 않습니다.





code-injection