2017-11-09 12 views
0

고객에게 백업 할 디렉토리를 지정할 수있는 소형 포털 응용 프로그램이 있습니다. 우리는 백엔드에서의 나쁜 행동을 차단하는 강력한 체크를하고 있지만, 제출 된 폼의 경로 이름의 일부로 ".."를 입력하지 못하게하고 싶습니다.2.8로 업그레이드 한 후 데이터 파슬리 패턴 정규식 실패

특히 첫 번째 예가 허용됩니다. 다른 예는 양식 유효성 검사에서 거부됩니다.

web/wordpress.sitefiles/ ../../../etc/somefile web/../../../etc/somefile web/badname../

은 이전에 우리는 멋지게 일을 할 것 같았다

data-parsley-pattern = '(?![\.]{2})'

를 사용했다.

파슬리 2.8의 정규식 변경 사항을 잘 모르겠습니다. 이제 문자 그대로 아무것도 형태로 유효성을 검사하지 않습니다.

나는 파슬리 문서를 검토하고 StackOverflow 및 기타 온라인 소스를 검색하지 않았습니다.

regextester.com을 샌드 박스로 사용하면 다음 패턴이 우리가 필요로하는 것과 정확히 일치합니다.

'^((?![.]{2}).)*$'

그러나 데이터-파슬리 패턴에 잘 번역하는 것 같지 않습니다. 우리의 형태, 위의 정규식

그것은 이제 고정되는 패턴을 정규식 워드 프로세서에서 언급

, 그래서 나는 또한

'((?![.]{2}).)*'

의 축소 버전을 시도했다. 우리가 입력 한 모든 항목과 일치하지만 그 모든 것을 일치 게다가.

이것은 매우 간단한 문제인 것처럼 보였습니다. 그러나 정규 표현식에 대한 나의 제한된 지식이 나를 잘못 이끌거나 파슬리 문서를 오해하게 만들었다 고 생각합니다.

모든 안내가 크게 감사하겠습니다.

답변

0

그래서 정규 표현식에 오류가 없었지만 파슬리가 성공적으로 제출하지 못한 양식에 어떻게 반응 하는지를 이해했습니다.

실제로 사소한 버그라고 생각합니다.하지만 동작은 의도적으로 설계된 것입니다.

입력이 5 개인 양식이 있습니다. 처음 두 개는 기본값으로 미리 채워져 있습니다. 세 번째는 공백이며 마지막 두 개는 정수, 최소값 1, "0"으로 미리 채워집니다.

두 번째 입력은 ".."을 허용하지 않는 텍스트 필드입니다. 이 값은 "web /"값으로 미리 채워져 있습니다.

페이지가로드 된 후 내용을 수정하지 않고 양식을 제출하려고하면 위쪽 두 필드가 녹색으로 표시되고 세 번째 필드는 비어 있으며 아래쪽 두 정수는 빨간색으로 표시됩니다.

이제 두 번째 상자에서 "web /"을 "web/.."로 변경하면 필드는 녹색으로 유지됩니다. 무효 매치를 경고하지 않습니다.

빨간색 정수를 유효한 범위로 변경하면 녹색으로 변한 다음 잘못된 숫자로 변경하면 빨간색으로 변합니다.

"웹 /"입력란에 유효하지 않은 값으로 제출 버튼을 누르면 해당 문자열이 유효/유효하지 않은 값으로 변경되어 동적으로보고됩니다.

물론 SUBMIT을 누르면 모든 입력란에서 올바르게 적용됩니다. 그래서 내 오류 필드의 색상을 내 정규식 테스트에 의존했다.