문제

ASP .NET MVC 응용 프로그램을 개발 중입니다. 내 행동 중 하나가 필요합니다 id 매개 변수로. 예를 들어:

public actionresult Detail(Guid id){
    return View();
}

보시다시피, 나는 사용하고 있습니다 Guid 대신에 Int. 문제는 더 화장품입니다. URL은 매우 길 수 있습니다 localhost/Detail/0c157b42-379d-41d5-b9ba-83e9df9985b2.

의 일부만 가져 오는 것이 안전합니까? Guid 처럼 localhost/Detail/0c157b42?

도움이 되었습니까?

해결책

Guid는 독특한 방식으로 설계되었지만 그 일부는 그렇지 않습니다. 보다 이 블로그 게시물 자세한 내용은. SHA -1 또는 (보안 문제가없는 경우) MD5와 같이 유령을 단축 해야하는 경우 GUID가 좋은 해시를 가져갑니다.

다른 팁

아니요, 안전하지 않습니다.

그래도 SHA-2 해시를 계산하고 처음 몇 인물을 취할 수 있습니다.

아니요, 서브 세트가 고유하지 않을 수 있으므로 전체 GUID가 필요합니다.

예를 들어:

0C157B42-379D-41D5-B9BA-83E9DF9985B2

0C157B42-379D-41D5-B9BA-83E9DF9985B3

주목하십시오. 마지막 숫자 만 다릅니다. 시작은 모두 동일합니다. Guid의 후행 끝을 사용할 수 없습니다.이 가이드의 어떤 부분이 생성 될 때 어떤 부분이 변경 될지 예측할 방법이 없기 때문에 사용할 수 없습니다.

고려해야 할 몇 가지 다른 옵션 * 0C157B42로 시작하여 GUID가있는 세부 정보가 두 개 이상인 경우 URL LocalHost/Detail/0C157B42에 해당 세부 사항 객체 목록이 표시됩니다. * URL aliasing- 세부 사항 객체에서 "친숙한 URL"필드를 허용합니다.

-S의 Guid를 청소하고 16 진수를 Base32 (AZ, 0-5)로 변환하여 16 자로 단축 할 수 있습니다.

약간의 응답이지만 누군가가 이것을 읽는 경우 ...

사용에 따라 단축 된 안내 값을 제공 할 수 있습니다.

예를 들어, ID 값이 생성되어 사용자에게 인증 토큰 종류의 값으로 제공되면 생성 중에는 많은 문자를 가져 와서 다른 사용 값과 비교할 수 있습니다. 일치하는 경우 새 제품을 생성하고 고유 할 때까지 재 경력하십시오.

이 기술은 안내서의 해시 값을 다듬는 경우에도 좋습니다. 실제로 ID로 사용할 값을 무작위로 생성 할 때마다 '이미 사용 중이 아님'을 확인해야합니다.

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