2009-09-28 3 views
0

"/ js "에 대한 미리보기가 포함되지 않도록이 정규식 표현식을 다시 작성하는 방법이 있습니까?". (asmx (?!/js) | aspx | htm)"을 수행하는 대체 정규 표현식 "

성능면에서 걱정해야 할 부분입니까? HTTP 요청을 필터링하는 데 사용됩니다.

\.(asmx(?!/js)|aspx|htm) 

편집 : 가 명확하기 : 내가 특별히 다른 모든이 .asmx 요청을 통해 "이 .asmx/JS"을 방지하지만 수 있도록하고 싶습니다. 모든 허용되는 값을 나열하는 화이트리스트 패턴, 또는 원치 않는 경기에 대한 부정적 예측 -

BAD: Portal.asmx/js 
GOOD: Portal.asmx/UpdateProduct 

답변

3

당신은 Portal.asmx/js을 차단하지만, 그것을 처리하는 방법은 두 가지가 있습니다 Portal.asmx/UpdateProduct 수 있도록합니다.

수용 가능한 모든 값을 나열하는 것보다 부정적인 예측이 거의 확실하게 성능 향상 될 것입니다.

그러나 기존 식을 사용하면 원하는 것과 정확히 일치하지 않습니다. 예를 들어, Portal.asmx/json을 차단하고 Portal.asmx/js.aspx을 허용합니다 (URL은 아닐 수도 있지만 수정이 필요한 항목 만 강조 표시). 적절하게

이 표현은 (eyelidlessness 답변에서 복사) 처리 할 일 :

\.(asmx(?!/js[/\z])|aspx$|html?$) 


그것은 [/\z] 문자 클래스 중 하나 / 또는 <end of string> 일치하는 것으로 설명 가치 - \z$에 관해서는 동일하지만 문자 클래스 ($이 리터럴 $ 문자와 일치 함)에서 작동합니다.
($\z 사이에는 URL 필터링과 관련없는 여러 줄 모드에서만 차이가 있음). 당신이 측정 성능 문제를 가지고하지 않는 한 일반적으로


, 성능에 대해 걱정하지 마십시오 (그렇지 않으면 당신은 어떻게 당신이 변경 한 것은 어떤 차이를 만들어 알고 것이다).

+0

-1 : 그러나, 당신은 뭔가를 시도 할 수 있습니다 오탐 (false positive) (예를 들어 Portal.asmx/jssomething)를 잡을 수 있습니다 문제는 ASMX 후 경로를 처리 할 수있는 정규식을 요청/, 단지 asmx/js가 아니라 – eyelidlessness

+0

원래의 질문 *은 그것을 묻지 않았다, 그것은 내가 대답 한 후에 추가 된 새로운 추가이다. –

+0

대답이 틀렸기 때문에 왜 제가 -1을 주 었는지 설명했습니다. 나는 downvotes를 설명하는 것이 중요하다고 생각합니다. 내가 편집 한 -1이 삭제되었습니다. – eyelidlessness

2

간단한 미리보기의 성능에 대해서는 걱정하지 마십시오. 귀하의 정규식은 괜찮습니다.

편집 :

\.(asmx(?!/js[/\z])|aspx$|html?$)