2013-08-12 2 views
1

mongodb를 사용하여 작은 웹 응용 프로그램에 불을 붙이고 있습니다. 예를 들어 url에 mongoIds를 공개적으로 표시하는 것이 좋을지 생각했습니다.MongoId를 공개적으로 표시 하시겠습니까?

지금은 사용자 프로필에 대해 다음 URL 구조를 사용하고 있습니다 : http://example.com/user/MONGOID

이 보안 결함이 있습니까 아니면 다른 방법으로 권장하지 않습니다?

+0

표시 할 보안 위험은 없습니다. ID가 매우 예측 가능하고 트래픽이 많은 웹 사이트에서 종종 추측 될 수 있으므로 ID에 대한 표시 세부 정보 앞에 보안이없는 경우에만 문제가됩니다. – WiredPrairie

+0

이 질문은 Google 검색을 조금만 수행하면 2 번 이상 적용됩니다 (이 질문에 두 번 대답했습니다), ID가 추측 할 수 없다는 것은 설정이있는 경우 사용자가 내부 PID를 추측해야하므로 PHP로 개인 테스트에서 실제로 데이터와 일치하는 객체 ID를 만들기 위해 각 호스트의 컴퓨터 ID (나는 보이지 않음) 거미가 대규모 설정에서 단일 _id에 대해 10,000 회를 초과하는 계산 집합을 반복적으로 반복해야한다는 것을 알았습니다 – Sammaye

답변

2

대답은 여러 가지에 달려 있습니다 ...

URL에 ID를 사용하는 것은 일반적으로 좋지 않습니다. According to OWASP, it ranks #4 in the top 10 web security vulnerabitiy list. 그러나 그것을 사용하여 프로젝트를 망칠 수는 없습니다.

  • 요청을 가로채는 몇 가지 코드를 가지고 있고 사용자가 권한이 있는지 확인 (StackOverflow의 프로파일과 같은) 공개입니다

    • 만 데이터를 사용

      당신이 중 하나를 수행해야합니다, 보안 취약점을 방지하기 위해 리소스 (프로필, 페이지, 문서 등)를 볼 수 있습니다.

    사용하면 _id 또한 공개 URL을 백엔드와 연결합니다. 데이터베이스 기술을 변경하면 변환이 필요합니다. 또는 개체가 파괴되고 다시 생성되지만 데이터베이스 또는 다른 개체를 병합하는 것과 같은 다른 _id을 사용하는 일부 변경을 실행해야 할 수 있습니다. 그 때문에 URL이 변경되는 것을 원하지는 않습니다.

    또 다른 것은 _id에는 좋은 공간 분포가 없다는 것입니다. 좋은 샤딩 키를 만들지 않습니다. 시간 소인에서 파생되었으므로 모든 _id은 서로 가깝게 선형입니다. 그들은 같은 샤드 (몽고는 나중에 그들을 퍼트 릴 것이다. 그러나 you want a key that has high cardinality)에 들어간다.

    그래서 저는 지금 지불하고 처음부터 응용 프로그램에 대한 개인 ID 필드를 사용하는 것을 선호합니다. 원하는 경우 _id 입력란에 저장할 수 있지만 문서에 다른 키를 추가하고 색인을 생성하여 URL에 사용하십시오.

  • +0

    OWASP 페이지는 ** 인증되지 않은 ** 직접 객체 참조에 대해 설명합니다. 당신이 적절한 도메인 객체 보안을 구현하는 한 id 노출은 괜찮습니다. 기본적으로 이것이 대부분의 사이트에서 수행하는 작업입니다. – soulcheck

    2

    아니요 보안과 관련이 없습니다.

    모든 사용자가 할 수있는 것은 일부 사용자의 ID를 추측하거나 모든 ID를 통해 시스템의 모든 사용자를 얻는 것입니다.

    예를 들어 stackoverflow를 가져옵니다. 그들은 당신과 같은 패턴을 가지고 있습니다 : http://stackoverflow.com/users/352959 이것은 352959입니다. 브라우저에 입력 할 때마다 http://stackoverflow.com/users/352959/king-julien으로 리디렉션됩니다.

    나는이 번호들을 반복하려고 시도 할 수 있으며, 다음 사람은 http://stackoverflow.com/users/352960이지만, 이것이 내가 찾을 수있는 것은 이것이 존이라는 것입니다. 그리고 분명히 http://stackoverflow.com/users/1은 자원의 창시자입니다.

    관련 문제