2009-03-31 4 views
1

일부 URL 매개 변수에 간단한 종류의 MAC을 추가하려고합니다. 이것은 만 응용 프로그램 버그 및 캐싱 관련 문제/버그에 대한 추가적인 방어책으로 사용되며 응용 프로그램의 실제 로그인 보안을 대체하는 형식으로 의도 된 것은 아닙니다. 주어진 비즈니스 오브젝트 ID는 단일 사용자로 제한되도록 백엔드에 의해 이미 보호됩니다.URL 매개 변수에 간단한 MAC을 추가 하시겠습니까?

기본적으로 짧은 URL을 2 ~ 4 자 크기의 URL 매개 변수에 추가하고 싶습니다. 나는 f (business-data-id + logged-on-user-id +?) = hash의 라인을 따라 가역 함수를 갖고 싶다고 제안하지만 제안에 개방적이다.

기본 추측은 ID 추측을 중지하고 로그온 한 사용자별로 URL이 상당히 다른지 확인하는 것입니다. 나 또한 하지 마십시오 뭔가 MD5처럼 크고 clunky 싶습니다.

답변

2

암호화 품질을 기대하지 않으므로 24 비트 CRC가 사용자의 요구에 맞을 수도 있습니다. MD5는 절대적인 측면에서 "빠름"이지만 CRC는 상대적으로 "빠른 속도"입니다. 그런 다음 3 바이트 CRC를 Base-64 인코딩을 사용하여 4 자로 텍스트 인코딩 할 수 있습니다. 당신이 —을 보호하기 위해 원하는과 함께

private static byte[] crc(byte[] data) 
{ 
    int crc = 0xB704CE; 
    for (int octets = 0; octets < data.length; ++octets) { 
    crc ^= (data[octets] & 0xFF) << 16; 
    for (int i = 0; i < 8; ++i) { 
     crc <<= 1; 
     if ((crc & 0x1000000) != 0) 
     crc ^= 0x1864CFB; 
    } 
    } 
    byte[] b = new byte[3]; 
    for (int shift = 16, idx = 0; shift >= 0; shift -= 8) { 
    b[idx++] = (byte) (crc >>> shift); 
    } 
    return b; 
} 

내가 (서버 만 알려져있다) 비밀 키를 해시 것 : 여기

는 OpenPGP를 ASCII-갑옷 체크섬에 사용되는 검사의 자바 구현입니다 아마도 객체 식별자와 사용자 식별자의 조합 일 것입니다.

+0

그 라인에있는 "Something"은 내가 어제 한 것과 정확히 일치하는 것으로 밝혀졌지만, 여전히 32 비트 crc와 base64 인코딩에 대해 궁금해하고있었습니다. CRC24는 * one *을 해결합니다.) – krosenvold

0

좋은 질문이 있습니까? 쿠키에이 정보를 저장하지 않는 이유는 무엇입니까?

그런 다음 MD5와 같이 크고 멍청한 무언가를 사용할 수 있습니다. 그러면 URL도 여전히 아름답습니다.

+0

이것은 모든 매개 변수가있는 * 모든 * url에 적용됩니다. 서버에서 클라이언트로 보내는 것이므로 많은 정보가있을 것입니다. 그리고 이것이 합법적 인 사용자를 ID 추측에서 어떻게 막을 수 있습니까? – krosenvold

+0

죄송합니다. 그러나 URL 매개 변수에 대한 액세스 코드가 귀하에게 어떤 추가 코드인지 알려주지 않습니다. 백엔드에서 인증 및 액세스 제어가있는 경우 사용자가 볼 권한이없는 리소스를 보려고 할 때 "액세스가 거부되었습니다"라는 메시지를 추측하여 ID를 보호하지 못합니까? –

+0

버그 캐싱에 대한 추가 예방 조치 – krosenvold

1

MD5는 기본적으로 MD5이지만 크기가 작 으면 MD5를 사용하지 않고 마지막 4 문자 만 사용해야하는 이유는 무엇입니까? 이것은 당신의 URL에 거대한 얼룩을 추가하지 않으며, 그것은 항상 4 개의 좋은 16 진수입니다.

+0

다른 답변이 없으므로 이것 역시 제가 생각한 것입니다. 큰 체크섬을 계산하고 그것의 작은 부분만을 사용하는 것에 대해 회의적입니다. 계산 오버 헤드가 괜찮다고 생각합니까? – krosenvold

+0

MD5를 계산하는 것은 꽤 저렴하지만 벤치마킹을 통해 확인하십시오. 우리는 단단한 루프에서 MD5를 한 번 사용 했으므로 벤치 마크를 통해 초당 수천 개의 IIRC를 확인했습니다. –

관련 문제