2010-02-18 6 views
1

여러 웹 서비스에서 클라이언트를 인증해야하는 경우가 있습니다. 기본적으로 각 서비스는 클라이언트를 식별하고 클라이언트에 대한 몇 가지 작은 정보를 알아야합니다.클라이언트를 통해 서버에서 서버로 중요한 데이터 보내기

내가 지금 일하는 방식은 필요한 식별 정보가 인증 웹 서버에 의해 데이터베이스의 세션 테이블에 저장된다는 것입니다. 웹 서버는 클라이언트에게 문자열을 전달합니다.이 문자열은 데이터베이스 항목을 식별하고 다른 웹 서비스로 전달됩니다. 그런 다음 웹 서비스는이 문자열을 사용하여 데이터베이스 항목에서 클라이언트에 대한 필요한 정보를 가져옵니다.

사용자 ID와 기타 필요한 정보가 포함 된 암호화 된 BLOB를 클라이언트에게 제공하는 것이 가능할 수도 있습니다.이 정보는 다소 작으며이를 위해 데이터베이스를 완전히 사용하지 마십시오. 클라이언트는 포함 된 내용을 알 필요없이 blob (앞 단락의 문자열과 같이)을 그냥 지나치고 웹 서비스 만 해독 방법을 알 수 있습니다.

이렇게하면 데이터베이스에서 세션 정보를 저장할 필요가 없어지고 전체 프로세스를 더 간단하게 만들 수 있습니다. 데이터베이스를 사용하면 이전 세션 및 시간 초과 등을 정리하는 것에 대해 걱정해야합니다.

내 질문 : 클라이언트에서 안전하고 수용 가능한 것으로 간주되는 서비스를 통해 중요한 데이터를 전달하고 있습니까? 데이터를 변경하는 클라이언트에 대한 걱정을 없앨 수있는 방법으로이 작업을 수행 할 수 있습니까? 어떤 암호화 알고리즘을 사용하면 좋을까요? .Net 전용 클래스를 사용하면 상당히 도움이됩니다.

답변

1

앱을 단순화하는 합리적인 방법 인 것처럼 보이지만 클라이언트를 사용하여 식별 데이터를 저장하면 항상 session hijacking attacks에 취약합니다.

다른 말로하면, blob을 아무리 잘 암호화 했더라도 다른 사람이 사용자의 브라우저 데이터를 가져 와서 복사하고 사용자를 가장 할 수 있습니다. ASP.Net 세션 쿠키는 항상 btw에도 취약합니다.

완전히 보안을 유지하는 유일한 방법은 SSL을 사용하는 것입니다.

관련 문제