2011-09-20 3 views
2

Why are the query parameters for many websites(MySQL) very cryptic long integers?에 대한 후속 질문입니다. 보안 및 확장 성 측면에서. 모든 자료를 인용하십시오 (온라인/오프라인).웹 사이트에 대한 URL을 작성하는 동안 모범 사례에 대해 알아볼 수있는 리소스는 무엇입니까?

+1

아마도이 질문에 답하기에는 너무 모호합니다. 특정한 사건이 생길 수 있습니까? – Bojangles

+0

트위터 같은 동적 인 사용자 생성 콘텐츠 웹 사이트의 URL을 작성할 때 사용자의 각 게시물에 긴 정수가 제공됩니다. 같은 방식으로 MySQL 테이블의 데이터 유형을 결정할 때 또는 내 웹 사이트의 mod_rewrite에서 다시 쓰기 규칙을 작성할 때 고려해야 할 사항은 무엇입니까? – Sravan

답변

1

보안 및 확장 성 측면에서 당신이 상상하는 모든 URL을 사용할 수 있습니다.

일반적으로 인간의 가독성 및 유용성 또는 URL 구축 규칙에 영향을주는 (더 자주) 검색 엔진 우정입니다.

말하기, PHP.NET 유명한 php.net/echo 기능 설명에 빠르고 쉽게 액세스 할 수 있습니다. 그것이 보안이 아닌 그러한 URL을 만드는 이유입니다.

1

보안 및 확장 성은 URL이 형성되는 방식과 관련이 거의 없습니다. 일부 사이트에서는 그림 (예 : Facebook)을 보호하기위한 수단으로 암호 URL을 사용합니다. 이러한 유형의 보안은 일반적으로 눈살을 찌푸리게합니다. 브라우저 캐시, 프록시 캐시 등 다양한 방법으로 URL을 알고있는 모든 사람이 의지.

깨끗한 URL은 검색 엔진 최적화에 도움이되지만 보통 응답이 느려지고 확장 성이 떨어집니다. 내 프로필의 프로필 페이지를 보여주는 URL http://example.com/user/Lars을 생각해보십시오. 내 계정이 데이터베이스에서 내 accountname이 아닌 surrogate key (임의의 숫자)으로 연결되어 있으면 시스템은 먼저 나머지 테이블을 얻으려면 대리 테이블에 사용자 테이블을 쿼리해야합니다. 하나 이상의 테이블을 쿼리해야하므로 성능이 저하됩니다.

+0

... 대리 키가 색인되지 않는 한, 모호성 (동시에 "Lars"?)을 해결하는 동안 성능이 적어도 동일 할 것입니다. 또한 공유 락커 (RapidShare 및 친구들)는 "/ ID/Filename"구조를 사용하여 모호함을 통해 보안을 추가합니다. –

+0

예, 색인을 생성하여 작업 속도를 향상시킬 수 있지만, 트위터와 같은 고성능 사이트의 경우 기본 키를 직접 사용하는 것이 좋습니다. 정수 검색은 일반적으로 문자열 검색보다 빠르며 인덱싱을 사용하면 검색 속도가 빨라집니다. – Lars

+0

바로 그 이유는 당신의 답이 많은 의미가 있다고 생각하지 않고 자신이 모순되는 것처럼 보입니다 : surrugate 키는 기본 키 (예 : 자동 증가 숫자)가 될 수 있으며 정확한 "Lars"를 식별합니다. ''라스 '. –

1

대담한 답변과 완전히 동의하지만 긴 "숨겨진"ID가 보안 및 때로는 확장성에 기여하는 경우가 있습니다. Sharelockers (RapidShare 및 친구)는 대개 URL에 /ID/Filename 구조를 사용하여 모호함을 통해 보안을 추가하기 때문에 누군가가 모든 정수 또는 공통 파일 이름을 테스트하고 중요한 정보에 액세스하기가 너무 쉽습니다.

일부 사람들은 데이터베이스 ID에 일종의 체크섬 알고리즘을 적용하기 때문에 누군가가 기본 구조를 파악하고 특정 종류의 정보를 "숨길"가 더 어려워집니다. 많은 사람들이 무언가를 지불하기를 꺼리게 될 것입니다. 주문 URL이 예를 들어 /order/2/ 인 경우 온라인으로 체크섬을 사용하면 성능 향상에 기여할 수 있습니다. 데이터베이스를 쿼리하지 않고도 잘못된 ID를 무시할 수 있기 때문입니다 (누군가가 URL을 무차별하게 처리 할 때 유용합니다).

긴 ID는 넓은 범위의 가능한 숫자를 제공한다는 점에서 확장성에 기여합니다 ("int (11)은 모든 사용자에게 충분합니다"가정의 두 번째 - 미안하지만 오래된 이야기를 찾을 수 없음)의 Slashdot had been a victim) 그래서 당신은 트위터와 친구들이 요즘 다른 접근 방식을 사용하는 것을 보았습니다.

더 넓은 ID를 사용하면 타임 스탬프, 데이터베이스 레코드를 만든 IP/호스트 이름 등과 같은 자세한 정보를 저장할 수도 있습니다. 이는 분산 데이터베이스 설치를 실행할 때 매우 중요 할 수 있습니다. 어떻게 작동하는지 더 잘 이해하려면 MongoID class 문서를보십시오.

관련 문제