문제

예를 들어: http://stackoverflow.com/questions/396164/exposing-database-ids-security-risk 그리고 http://stackoverflow.com/questions/396164/blah-blah 같은 질문을로드합니다.

(이것은 질문의 DB ID 인 것 같아요?이 표준은 ASP.Net의 표준입니까?)

웹 앱에서 이러한 유형의 체계를 사용하는 장단점은 무엇입니까?

도움이 되었습니까?

해결책

글쎄, 간단한 ID는 일반적으로 순차적이므로 응용 프로그램에서 다른 데이터를 추측하고 검색하기가 매우 쉽습니다.

Ajax를 통해 동적으로 대신 런타임에 JSON을로드하십시오 https://stackoverflow.com/questions/395858/doesnt-matter-what-i-type-here

이제, 올바른 마음을 가진 사람이 당신이 당신의 링크에 닿아 야한다는 사실에 대한 모든 보안 힌지를 만들지 않을 것이기 때문에, 그것은 또한 보너스로 보일 수도 있습니다. 보안 데이터, 따라서 데이터의 쉬운 발견 성이 좋을 수 있습니다.

그러나 한 가지 요점은 검색 엔진에 여전히 오래된 링크가 없으면 이전 URL의 유효하지 않은 것이 나쁘다는 것은 어느 시점에 데이터베이스를 다시 알게 될 것이라는 점입니다.

또한, 여기서는 다른 질문에 이와 같은 링크를 사용하는 것이 매우 정상이므로, 어느 시점에서 구사를 원하고 따라서 물건을 갱신하려면 (또는 Guid 's로 이동하는 경우) 오래된 구조와 ID를 유지해야합니다.

이제, 이것이 일어날 가능성이 있습니까? 아마도 아니요.

나는 그것에 대해 너무 걱정하지 않을 것입니다. 응용 프로그램에 대한 모든 항목 지점이 알려져있는 것처럼 보안을 구축하고 문제가 없어야합니다.

다른 팁

  1. 데이터베이스 ID는 데이터베이스에서 질문을 조회하는 데 사용됩니다. 그것은 수치입니다. 당신이 그것을 남겨두면 훨씬 느린 제목을 조회해야했습니다.

  2. 문제 자체는 URL의 일부이며 "검색 엔진 친화적"이라는 URL입니다. G ** gle 등에 의해 더 높아질 것입니다.

찬성:

  • 페이지 정보를 검색하기가 매우 쉽습니다. ID를 가져 가서 데이터베이스, 비올라에 전화하십시오. 이 조회를 매우 빠르게 만들기 위해 테이블을 색인화해야합니다.
  • 고유 한 URL을 보장합니다.

범죄자:

  • 시스템의 ID가 공개적으로 표시되고 있습니다. 그렇게 공개적으로 이용할 수있는 시스템에서는 문제가되지 않습니다. 그러나 백엔드의 적절한 보안 조치는 민감한 시스템에서도 문제가되지 않을 수 있습니다.
  • 못생긴 URL. 6 개 이상의 숫자 숫자는 기억하기 어렵고 페이지를 구별하기가 더 어렵습니다. 보다 관련성이 높고 잘 구조화 된 정보가있는 URL이 일반적으로 더 잘 순위가 매겨 지므로 SEO 결과도 발생할 수 있습니다. 따라서 URL에 게시물 이름을 제공하여 보상합니다. 점심 시간에 친구에게 특정 게시물을 덜 낼 수는 없지만 브라우저 역사에서 여전히 더 쉽게 찾을 수 있습니다.
  • 느린 조회. 데이터베이스에서 텍스트 검색을 수행하는 것은 일반적으로 느립니다.

그러나 이와 같은 커뮤니티에서는 같은 질문 이름이 동시에 게시 될 가능성이 높습니다. 이 특정 웹 응용 프로그램이 개발되었다는 맥락.

나는 ASP.NET 및 기타 프레임 워크에서 그것을하는 것이 나쁜 연습이며 상당히 일반적이라고 생각하지 않습니다. @lassevk가 말했듯이 보안에 의존하면 더 많은 수표가 필요하지만 (사용자 X가 Y를 기록 할 수있을 수 있음) 공용 사이트에 대한 URL의 SEOFRENTYS에 더 적합합니다.

예를 들어 URL도 마찬가지입니다 친숙한:

URL에서 DB ID를 사용하는 장단점?

Google은 URL이 시작될 때 끝보다 높은 정보를 평가하므로 다음과 같습니다.

https://stackoverflow.com/pros-and-cons-of-using-db-id-in-the-url/407120

더 높은 순위를 얻어야합니다 "URL에서 DB ID 사용의 장단점". 유일한 요인은 아니지만 상당히 주요 요인입니다. 아마존의 형식을 살펴보면 아주 좋은 이유가 있습니다.

http://www.amazon.com/maverick-ricardo-semler/dp/0712678867

http : // server/book-name/dp/book-id

WordPress는 다음과 같습니다.

http : // server/yyyy/mm/dd/name-of-post

그러나 같은 날에 "foo"라는 두 개의 게시물을 게시하면 다음을 얻을 수 있습니다.

http : // server/yyyy/mm/dd/foo

http : // server/yyyy/mm/dd/foo2

슬러그 (foo/foo2)는 PK가 아니지만 게시물 테이블보다 고유 한 것으로 유지됩니다.

URL이 GUID가 아니라면 ID를 URL에 넣는 것이 문제가되지 않는다고 생각합니다! 너무 길고 입력하기가 어렵습니다. int 또는 일종의 짧은 가이드 (예 : 6-8 숯)라면 문제가되지 않아야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top