2009-06-03 2 views
6

나는 데이터베이스에 URL을 저장하고있어 두 URL이 동일한 지 알 수 있기를 원합니다.URL에서 후행 슬래시를 제거하는 것이 항상 안전합니까?

일반적으로 끝에 오는 슬래시는 서버에서 가져 오는 응답을 변경하지 않습니다. (예 : http://www.google.com/http://www.google.com과 같습니다.)

아무 것도 보지 않고 URL에서 마침내 슬래시를 맹목적으로 제거 할 수 있습니까?
안전합니까? 나는 웹 서버가 원하는 수 이론적으로 반환 완전히 다른 것을 알고
http://www.google.com/q?xxx=something&yyy=something/

및 I :

내가 "아무것도 보지 않고"을 의미하는 것은 내가에서 슬래시를 제거하는 것이다 슬래시가없는 URL로 가끔 간다는 것은 슬래시가있는 URL로 리디렉션됩니다. 내 유일한 의도는 두 URL이 동일한 지 판단하는 것입니다.

이 방법이 안전한가요?

+2

반드시 "리소스"는 아니지만 XML 네임 스페이스는 후행 슬래시 또는 비 슬래시에 대해 매우 특별합니다. –

답변

18

아니요 항상 안전하지는 않습니다. 어쨌든 웹 서버는 URL의 경로 부분을 해석 할 수 있습니다. URL에서 GET 또는 HEAD를 사용하지 않고 URI가 해결할 내용을 알 수 없습니다.

+0

감사합니다. 나는 DB를 살펴 봤는데, 다행스럽게도, 이것이 문제가되지 않는다는 것을 확인했습니다. 제출 된 모든 URL은 우리가 가지고있는 북마크릿 코드에 의해 잡혀 있으며 의심되는 바에는 후속 슬래시를 제외하고 동일한 URL을 가진 2 명의 사용자가있을 가능성이 없습니다. 또는 적어도, 그것은 아직 일어나지 않았다 :-). –

+1

그리고 IIRC의 URL 사양에서는 특히 슬래시로 끝나는 URL이 디렉토리를 나타내며 without는 문서를 나타냅니다. 많은 웹 서버가 전자 메일에 대한 기본 문서로 리디렉션되거나 기본 문서를 반환하고 후자에 대해 401을 반환합니다 (저는 알고 있습니다). –

+1

URL 사양은 계층 적 URL 스킴에 대해 이야기합니다. BAR : blah와 같은 것보다는 FOO : //와 같은 것입니다. 일부 계층 적 구성 요소는 http, ftp와 같이 잘 알려져 있지만 결국에는 의미가 있는지 여부를 알 수 없으며 서버가 해석하고 OS, 서버 소프트웨어 구현 및 기타 사항에 따라 다를 수 있습니다. – dajobe

4

아니요 .htaccess 파일의 설정에 따라 일부 디렉토리 또는 CMS에서 생성 된 것과 같은 "URL 정리"에 후행 슬래시없이 액세스 할 수없는 상황이 발생했습니다. 드물기는하지만 웹 마스터의 실수 일 수 있습니다. 그러나 일어날 수 있습니다.

6

슬래시의 유무와 상관없이 동일한 응답을 얻을 수 있다는 점에서 안전 할 수도 있지만 실제로는 다른 것을 의미 할 수 있습니다. 디렉토리를 참조하는 URL 또는 사이트가 디렉토리로 제시하는 URL을 고려하십시오. URL을 사용하여

http://www.somesite.com/directory/ 

... 디렉토리를 요청하는 것이 확실합니다. 당신이 후행 슬래시 오프 해킹하는 경우 :

http://www.somesite.com/directory 

를 ... 사이트는 "디렉토리"라는 파일에 대한 요청으로 이것을 가지고 가고, 잠시 모두가 혼란스러워 할 것입니다. 디렉토리에 대한 요청으로 해석 할 수도 있지만 의미는 같지 않으므로 기대 한 바를 얻지 못할 수도 있습니다.

자세한 내용은 this article을 참조하십시오.

+0

또한 ** RFC 3986 **에서 [6.2.4. 프로토콜 기반 표준화] (http://tools.ietf.org/html/rfc3986#section-6.2.4). 웹 거미는 둘이 동등한 지 결정하려고 할 수 있습니다. – DavidRR

0

다른 사람들이 지적했듯이, 항상 안전하다고는 할 수 없습니다. 그것이 당신을 위해 작동한다면, 내 추천은 슬래시와 URL을 저장하고 비교를 할 때 그들을 벗을 것입니다. 실적이 좋지만, 누군가를 잘못된 웹 페이지로 보내는 것보다 낫다고 생각합니다.

+0

비교할 때 처리하지 않으려면 실제 URL과 URL을 표준 형식으로 저장하십시오. 시간 - 공간 절충. – Chuck

관련 문제