2014-10-31 6 views
1

아파치 서버 (일반적인 xampp 패키지)에서 일부 나머지 API를 호스팅하고 있습니다.URL로 인코딩 된 콜론 (% 3A)은 403에서 해결합니다.

HTTP 메소드 (put, post, get ...)로 자원을 공격하고 URL에 인코딩 된 콜론 (% 3A)이 포함되어 있으면 서버가 403 오류로 응답하는 경우가 있습니다. 그것은 서버의 폴더 구조에 의존하는 것 같습니다. 기존 폴더가 있고 해당 폴더에 % 3A를 포함하는 리소스를 공격하는 경우 서버는 403을 반환합니다. % 3A가 없으면 404와 같이 반환합니다. 이 같은 구조

:

htdocs/apis/userContext 
htdocs/apis/subscriptions 

http://localhost/apis/userContext/users/tel%3A2032342349 Works (returns 404 not found, because users doesn't exist) 
http://localhost/apis/userContext/tel%3A2032342349 Doesn't work (returns 403) 
http://localhost/subscriptions/tel%3A2032342349 Doesn't work (returns 403) 
http://localhost/nonexistingfolder/tel%3A2032342349 works (returns 404, becasue nonexistingfolder doesn't exist) 

의 URL에 표시하고자하는 값이 많이 telURIs은 그래서 제발 돈이

tel:+34678678678 

같이 있기 때문에 그것은 매우 짜증나 그저 콜론을 사용하지 말라고 말하는 것은 불가능하기 때문입니다. 어떻게 해결할 수 있을까요?

+0

무엇을 당신의 지금까지 규칙을 다시 작성 하시겠습니까? –

+0

서버에 대한 모든 요청을 처리하기 위해 슬림 프레임 워크를 사용하고 있기 때문에 index.php로 리디렉션되었습니다. – Guillemdc

답변

0

(2006 년 10 월 이후) - here에 대한 유효한 정보를 하나만 찾을 수있었습니다.

분명히이 오류는 Linux에서는 나타나지 않으며 Windows 플랫폼에서 발생합니다. 소스에 따르면 짧은 이름과 콜론 (:)이 드라이브 이름으로 해석 될 수 있습니다 (왜 그런가, 왜 file : //가 그것을 나타내는 지 모르겠다 - 잘 모름).

이 문제를 해결해야했지만 직접 링크를 설정할 수있었습니다 (고급 스러움이 있는지 여부는 알 수 없음). 내 솔루션에 있었다 - 같은 대체 적용한 후 그 URI에 대한 urlencode($uri) → urlencode(strtr($uri, ":", "_"))

  • 검색 -

    • 는 선택의 문자로 URI에 콜론을 대체 (I 밑줄 선택) SELECT ... FROM ... WHERE uri = REPLACE(@@uri, ":", "_")
  • +0

    대단히 감사합니다! 이 문제는 내가 리눅스 환경으로 옮겼을 때 문제가 사라진 것처럼 보였다. (몇 달 후 내가 이것을 썼다는 것을 잊어 버렸다.) 문안 인사! – Guillemdc