2016-11-25 2 views
0

이것은 사용자 개체가 세션에 저장되는 데 익숙한 새로운 질문 프레임 워크입니다.보안 : SSL을 사용하는 ASp.NET ID HTTPOnly 쿠키

나는 "클레임"을 쿠키의 일부로 보내는 것에 관해 많은 이야기를 보았습니다. 그렇게하면 사용자 정보를 다시 검색 할 필요가 없습니다. 이름, 전자 메일 또는 권한과 같은 내용은 저장되는 쿠키의 클레임 영역 중 일부입니다.

내가 다 공부 한 모든 것은 SSL을 통한 httpOnly가 해킹당하는 측면에서 매우 안전하다고 말합니다. 나는 사용자 ID를 보내기 위해 아무 것도하지 않는 것을 잊지 만 사용자를 식별 한 다음 DB에서 나머지 사용자를 찾아 적어도 사용자가 해킹 당하면 권한이 해킹되지 않도록합니다. 과도하게 조심 스럽습니까?

쿠키를 설정하는 사람이 7 일 또는 1 일 동안 만료되는 것을 보게됩니다 ... 그 점에 대해서는 클레임 ​​영역에서 권한/역할을 보냈습니다. 서버에서 변경되면 어떻게됩니까? 기본적으로 사용자가 로그인하여 로그 아웃해야 새로운 권한이 발생할 수 있습니다. 소프트웨어 UI 표준에 대한 표준 기대치가 궁금한가요? 당신의 생각에 미리

감사합니다 :)

안젤라

답변

0

나의 무지를 용서하지만 난 주장이 쿠키에 전송되는 소프트웨어의 조각을 건너 오지했습니다. 일반적으로 쿠키의 문제는 브라우저가 항상 쿠키를 보내도록 작성 되었기 때문에 XSS (교차 사이트 스크립팅) 공격의 가능성이 있습니다.

요즘 사람들은 ID 공급자 (로그인 페이지)와 서비스 공급자 (앱 코드)가 반드시 동일한 앱이 아니며 항상 직접 연결되는 것은 아니지만 페더레이션 인증 메커니즘을 사용하고 있습니다. . 즉, db에서 조회 할 수있는 사용자 데이터는 IdP에서만 존재하며 SP는 IdP가 제공 한 모든 것을 처리해야합니다.

이 때문에 정보의 각 비트가 'claim'으로 전송됩니다. 이것은 IdP가 사용자 이름이 john.smith라고 주장하지만 SP는이를 확인하는 수단이 없을 ​​수도 있습니다.

IdP와 SP는 IdP가 토큰 (예 : SAML 봉투 또는 JWT)과 SP에 서명 할 수있게 해주는 사전 공유 서명 키 형태로 신뢰를 설정해야합니다 토큰이 변경되지 않았 음을 확인할 수 있도록 서명을 확인합니다.

일반적으로이 토큰은 쿠키로 사용되지 않습니다. 대신 보통 Bearer 구성표를 사용하여 Authorization 헤더에 추가됩니다.

또한 쪽지로 - 세션 사용에 익숙하다고 말하면 세션 추적기도 쿠키입니다 (ASP.NET의 경우). 서버에는 응용 프로그램 풀의 메모리 캐시에 저장된 사용자에 대한 정보가 있으며 브라우저는 '여기있어.'라는 쿠키를 계속 전송합니다. 그래서 보안 현명한 거기에 단순히 쿠키를 사용하거나 쿠키 + 세션을 사용하는 사이에 비교할 수준입니다. 물론 쿠키가 정보를 유출 할 수 있다고 주장 할 수는 있지만, 앱은 항상 데이터를 토큰 화하거나 전체 쿠키를 암호화하여이 인수를 무효화 할 수 있습니다.

+0

@zaitman, 시간을내어 주셔서 감사합니다 :) 나는 토큰과 인증 헤더를 조사하여 같은 것을 발견했습니다. 사용자가 모든 요청을 다시로드 할 필요가 없도록 사용자 권한을 "페이로드"에 추가하는 것을지지합니다. Cookies 대 Authorization 헤더까지. 필자의 이해에서 인증 헤더는 XSS로 해킹 될 수 있습니다. 왜냐하면 클라이언트 쪽에서 읽을 수 있기 때문입니다. 클라이언트 쪽에서 읽을 수 있기 때문에 암호화하고 인증을위한 서명을 제공합니다._request.getResponseHeader (name)를 수행 할 수 있습니다. HTTPOnly 및 SSL을 사용할 때 쿠키를 읽을 수 없습니다. –

+0

@Angela 클라이언트를 위해 이러한 쿠키를 읽을 수 없게하는 것은 분명히 지침이지만,이 특정 구현 세부 사항은 클라이언트 작성자의 재량에 달려 있습니다. 예 : iOS WebView에서는 네이티브 코드에서 쿠키에 쉽게 액세스 할 수 있습니다. 토큰은 브라우저와 관련이없는 상호 작용이 필요한 경우에 보편적으로 사용할 수 있으므로 유용합니다. 코드 흐름 또는 새로 고침 토큰 흐름 그들은 어떤면에서든 '더 나은'것은 아니며 실제로는 안전하지 않으며, 추가 메커니즘을 제공하고 사용자가 외부 계정으로 로그인 할 수 있도록하는 것이 가장 좋습니다. – zaitsman

+0

표준/표준은 토큰이나 쿠키에 사용 권한을 전달합니까? 그물에 사람들은 사용자 데이터를 통과시키기 위해 토큰으로 옹호하고 있으므로 이후의 전화를 다시받을 필요가 없습니다. 나는 쿠키와 함께 똑같은 것을 본다. 어쩌면 나는 오래된 타이머이지만 해킹당한 경우에는 분명히 해치울 권한을 열지 않으려 고 생각합니다. 어쩌면 그들은 사용자를 얻지 만, 적어도 그들은 허가를 받아 들일 수 없다. 따라서 서버에 매번 DB 호출을 강제로 수행하여 해당 사용자에 대한 작업을 수행하기 전에 권한을 얻습니다. –