2009-08-18 3 views
7

결국 데이터베이스에 저장하려면 UUID를 생성해야합니다. 클라이언트 브라우저 (Javascript)에서이 UUID를 생성 할 수 있습니까 (There are some examples here)?Javascript 클라이언트 측에서 UUID를 생성 할 위험이 있습니까?

이렇게하면 보안 위험이 있습니까? 저장을 위해 서버에 전달되기 전에 누구나 UUID를 수정할 수 있음을 이해합니다. 그래서 데이터베이스에 저장하기 전에 고유 한 trull인지 확인해야합니다. 그러나 다른 것보다 체크 아웃 할 것이 있습니까?

(내 영어에 대한 모든 문법 오류를 수정 해 주시기 죄송합니다)

편집 : 내가 새로운 객체를 생성 할 수 있기 때문에, 난 이렇게 할 이유에 대한 질문에 답변하고 그것을에서의 식별자 자바 스크립트 및 내보기에 추가하고 서버에 AJAX 호출을 만들어 데이터베이스에 추가하십시오. 이렇게하면 데이터베이스에서 다시로드하여 기본 식별자가 무엇인지 알 필요가 없습니다.

+0

사용자가 귀하의 UUID 생성기 코드를 보도록하는 것이 보안 문제 일 수 있다고 생각합니다. 이론적으로 예를 들어 다른 사용자 세션 ID와 같은 기존 UUID를 생성 할 수 있습니다. –

답변

9

아니요. 단순한 식별자 일 뿐이며 유효성과 고유성을 실제로 확인하는 한, 예를 들어 URL에 ID가있는 사용자 계정과 다르지 않습니다.

URL 표시 줄을보십시오. 1296234가이 질문의 주된 열쇠라고 생각하지만 그 정보로는 아무 것도 할 수 없습니다. 당신의 대본과 같은 거래.

+0

감사. 나는 잘못된 일이 생기지 않도록 노력하지 않았지만 어떤 종류의 잘 알고있는 공격을 간과하지 않았 음을 확신하고 싶었습니다. –

3

이러한 클라이언트 측 생성시 어떤 이점이 있습니까? 모든 정직한면에서 가장 좋은 방법은 사용자 범위 밖에서 서버 측을 생성하는 것입니다. 심각한 보안 문제를 방지 할 수는 없지만 중복 유효성 검사를 줄여줍니다.

+0

이 스레드는 오래되었지만 완전히 멱등 원 (idempotent) REST 호출을 작성하는 경우에는 클라이언트에서 ID를 생성해야합니다. 또 다른 대안은 서버에 u로운 ID를 u 리한 다음 REST 호출 작성에서 해당 ID를 g 용하는 것입니다. 그러나 서버에 대한 두 번의 호출을 의미합니다. – Alkaline

+1

@Sampson 클라이언트 쪽에서 UUID를 생성해야한다고 생각한 적은 없지만 오프라인 웹 응용 프로그램에 관심이 있으며 클라이언트 쪽에서 생성 된 UUID는이 사용 사례에 완벽합니다. – Maxime

+0

엄격한 CQS를 준수하고 있으며 올바른 ID로 되돌릴 (예 : 적절한보기로 리디렉션하는 경우) 경우에는 그렇게하는 것이 좋습니다. – Shocked

3

데이터베이스에 ID를 생성 (증가)시킬 수없는 이유가 있습니까?

어쨌든 제출하기 전에 값의 고유성을 검사해야한다면, 사용하고있는 백엔드 언어를 생성하는 것만으로는되지 않습니다. 그러면 훨씬 더 불투명해질 것입니다.

+2

향후 시청자를위한 참고 정보 : 자동 생성 된 ID에 의존하지 마세요. 데이터베이스에서 분리하고 대신 UUID를 사용하십시오. –

2

예. 위험은 UUID에만 국한되지 않으며 ID로 수행하는 작업에 따라 클라이언트 측에서 생성 된 ID에는 위험이 있습니다. 문제는 Javascript를 인증하는 것이 매우 어렵다는 것입니다. 클라이언트가 생성 한 ID를 수락하면 해커의 ID를 수락합니다.

위험은 포함 할 수

  1. 세션 훔치는. ID를 사용하여 세션을 식별하면 누군가가 생성 된 ID로 기존 ID를 사용할 수 있으며 적절한주의가 필요하지 않으면 서버가 기존 세션으로 처리 할 수 ​​있습니다.

  2. 중복 키. True UUID는 무작위이지만 다른 사람이 데이터베이스를 망칠 중복 키를 생성 할 수 있습니다.

이러한 각각의 공격으로부터 방어 할 수있는 방법을 찾을 수도 있지만 수동적 인 보호가 될 수 있습니다. 클라이언트에서 ID를 생성한다는 원래의 목적을 무효화 할 수 있습니다. 이는 간단합니다.

+0

세션 ID를 식별하면 웹 사이트에서 해킹 당합니다. 포인트 1은 유효하지 않습니다. –

관련 문제