2009-11-26 3 views

답변

1

로그인 토큰 (나는 적어도 SHA-1 HMAC를 사용하는 것이 좋습니다). This site은 ASP.NET 용 샘플 코드를 제공합니다. .NET을 사용하지 않으므로이 코드를 확인할 수 없습니다.

HMAC 서명과 함께 토큰을 클라이언트에 제공하십시오. 클라이언트가 요청할 때마다 웹 서비스로 다시 전달하게합니다.

웹 서비스에서 HMAC 서명을 확인하기 만하면됩니다.

토큰이 변경되지 않으면 일부 악의적 인 사용자가 클라이언트 코드에서이를 관찰하고 복사 할 수 있습니다. 토큰을 타임 스탬프로 만들고 특정 기간 내에 토큰이 유효한 경우에만 허용하거나 토큰을 어떤 방법으로 특정 사용자에게 묶음으로써이를 피할 수 있습니다.

보안 담당자로서 리퍼러가 충분하지 않습니다. 프록시에 의해 제거되거나 악의적 인 클라이언트에 의해 위조 될 수 있습니다.

+0

해킹 된 알고리즘이므로 SHA-1을 사용하지 않는 것이 좋습니다. MD5도 마찬가지입니다. – jrista

+0

"해킹 된 알고리즘"? SHA-1에는 몇 가지 약점이 있습니다 (현재는 대량의 컴퓨팅 성능이 필요한 충돌 공격). HMAC 작동 방식으로 인해 충돌 공격은 HMAC 자체의 보안을 손상시키지 않습니다. 즉, 사용자 시스템에 지원이 제공된다면 SHA-256 또는 SHA-512 (SHA-2의 변형)를 권장하는 것이 좋습니다. (HMAC 또는 암호 해시를 혼자서 구현해서는 안되며 오류가 너무 많습니다.) – inklesspen

+0

클라이언트에서 서버로 제공된 토큰이 어떻게 보호를 제공하는지 이해할 수 없습니다. 내가 악의적 인 클라이언트를 가지고 있다면, 나는 클라이언트를 가장하고, 서버에 토큰을 요청하고 그것을 재생할 것입니다. – TMC

-1

클라이언트 브라우저의 리퍼러 문자열을 확인하십시오.

고정 오타, 감사 Nosredna

+0

HTTP 헤더는 비극적으로 "referer"로 잘못 표기됩니다. 응. – Nosredna

+1

Referers는 매우 쉽게 스푸핑 될 수 있습니다. – Joe

+0

제가 정확한 질문을 이해한다면, 세션 쿠키를 제외한 다른 해결책은 없습니다. 누가 서버를 두드리고 있는지 알 수 없습니다. 이것은 인터넷입니다. – powtac

0

으로 당신이 HTTP 리퍼러를 확인할 수 있습니다 언급하지만, 검증의 방법은 탬퍼 데이터와 같은 도구를 사용하여 스푸핑 무지하게 간단하다, 더 나은 옵션은 쿠키 데이터를 사용하여 세션을 관리하는 것입니다 https://addons.mozilla.org/en-US/firefox/addon/966

을 거부 할 것을 요청 돈 유효한 세션 토큰이 없습니다.

0

역방향 프록시로 보호 할 수 있습니다. 특정 IP 주소의 트래픽 만 허용합니다.

어쩌면 특정 디지털 인증서가 있는지 확인할 수 있습니다. 정확히 어떻게 할 지 모르겠지만 가능하면 확실합니다.

양식 인증으로 웹 서비스를 보호 할 수 있습니까? 단지 알려진 곳만 알려주시겠습니까?

@powtac도 보안 전문가는 아니지만 올바른 아이디어가 있습니다. 위험한 수준에 따라 달라질 수 있습니다.

진정한 보안 솔루션이 필요한 경우 보안 전문가와상의하고 싶을 수 있습니다. 여기서 좋은 응답을 얻지 못한다고 가정하십시오. 일을 만드는 것은 하나의 일입니다 - 나쁜 사람을 밖으로 지키는 것은 다른 문제입니다 :)

0

나는 웹 브라우저에서 서비스를 전혀 호출하지 않을 것입니다.

웹 사이트 프록시가 웹 서비스에 대한 모든 요청을 할 수 있습니다. 그런 다음 웹 사이트는 웹 서비스에 직접 인증을 제공합니다 (SSL, 인증서, 공유 비밀 또는 다른 구성표의 기본 인증).

이 방법이 실제 상황에 맞는지는 확실하지 않지만 보안이 강화됩니다. 그 이후로 HTML을 해킹하여 웹 서비스에 대한 악의적 인 요청을 만드는 능력을 제한합니다. 예 : 보안 토큰보기, 웹 서비스 엔드 포인트 및 데이터 구조보기 등이 있습니다. 보안 체인의 취약한 링크는 웹 사이트입니다.사용자가 제대로 인증 및 권한 부여를하지 않으면 보안 모델이 고장납니다.

0

어떤 종류의 웹 서비스인지는 모르지만 실제로 콘텐츠를 클라이언트로 푸시하거나 (실제로는 실용적이지 않음), 정말로 확실하게 알고 싶다면 클라이언트마다 패스 키를 적극적으로 밀어 넣으십시오. x 시간/일/주? 패스 키는 각 요청에 대한 인증으로 사용됩니다.

0

ASP.NET을 사용하기 때문에 기본 제공되는 양식 인증이 가장 쉬운 방법입니다. 웹 서비스와 동일한 도메인에 설정된 쿠키에 의존하기 때문에 동일한 도메인의 요청 만 성공적으로 인증된다는 측면에서의 이점이 있습니다.

관련 문제