2012-04-26 17 views
2

나는 데이터베이스 내부를 드러내는 것이 좋지 않다고 들었지만 비교적 높은 프로필 사이트를 많이 발견했다. Chartboost와 ServerDensity는 URL에 MongoDB 문서 _id 필드를 노출합니다.데이터베이스 내부를 노출하는 것이 좋지 않습니까?

누군가가 왜 그렇게 나쁜지에 관해 밝힐 수 있습니까? 내가 생각할 수있는 유일한 점은 사람들이 읽을 수있는 URL이 아니기 때문에 SEO에 좋지 않지만 사실일까요?

답변

2

데이터베이스 내부를 노출함으로써 데이터베이스 서버를 인터넷에 노출 시키거나 사용자가 임의 쿼리를 실행하는 것과 같은 것을 이해합니다. 이 물건은 분명히 나쁘다. 또는 데이터베이스 스키마를 어떻게 든 노출하면 악의적 인 사용자가이를 자신의 이점으로 사용할 수 있습니다.

URL에 개체 ID를 사용하는 것이 좋습니다. 인간은 어쨌든 URL을 암기하지 않으며 검색 엔진은 포스트에 대한 링크가 포스트 슬러그 또는 포스트 ID로 구성되었는지 상관하지 않습니다.

1

심지어 stackoverflow는 데이터베이스 ID-s를 URL에 표시합니다. 어쨌든 당신은 어떻게 든 리소스를 식별해야합니다 그것은 대리 키 또는 자연 수 있습니다. 기본적으로 모든 단일 사이트는 URL (일반적으로 PK)에 어떤 종류의 ID를 사용합니다. 왜 그들이 몽고 디부를 사용한다고 생각합니까? 긴 PK가 아닌 GUID가있는 관계 데이터베이스 일 수도 있습니다

다른 데이터베이스 스키마를 표시하더라도 SQL 주입으로부터 보호 되어야만 아무 일도 일어나지 않습니다.

+0

하지만 SO의 ID는 DB와 관련이 없습니다. mongoDB _id – UpTheCreek

+0

DB 고유 ID는 무엇입니까? 대리인 또는 자연어 PK를 데이터베이스에서 특수한 "not not"ID로 변환 할 이유가 없습니다. ID – Anton

+1

Db 특정, 즉 단순히 자동 증가, GUID 또는 다른 일반적으로 사용되는 DB 식별자가 아닙니다. 기본 MongoDB ObjectId는 레코드가 생성 된 날짜, 문서를 만든 머신의 식별자, 앱 뒤에 사용 된 db를 식별합니다. 물론, _id를 자신의 식별자 유형으로 대체 할 수 있습니다.이 경우 SO와 동일한 상황이됩니다. – UpTheCreek

관련 문제