클라이언트가 쿠키를 차단할 때 세션 상태를 유지하는 제안 된 방법을 사용하여 보안 결함이 있는지 확인하려고합니다.세션 상태 클라이언트 IP 사용
일반적으로 UUID가 데이터베이스에 저장된 것과 일치하는 경우 쿠키와 자동 로그인에 UUID를 저장합니다. 그러나 클라이언트가 쿠키를 차단 한 경우 컴퓨터에서 UUID에 액세스 할 수 없으므로 IP 주소를 사용하여 데이터베이스와 일치하도록 해결해야합니다.
나는 사용하여 IP 주소를 확인 :
String ip = request.getHeader("X-FORWARDED-FOR");
if(ip == null) {
ip = request.getRemoteAddr();
}
나는이 지역에서 작은 녹색 해요,하지만 난이 방법의 보안 결함이있을 수 있습니다 생각합니다. 예를 들어 사용자가 공용 Wi-Fi 네트워크 (커피 숍, 공항, 호텔 등)에서 애플리케이션에 액세스하면 공용 IP를 저장하고 해당 계정을 해당 IP에 일치시킵니다. 동일한 ip로 그들 뒤에있는 사람들은 로그 아웃을 특별히 기억하지 않는 한 그들의 계정에 액세스 할 수 있습니다. 어떻게 이것을 막을 수 있습니까? 나는 IP에 일치하는 것 외에 쿠키가 차단되었을 때 완전히 다른 접근법을 사용하는 것에 반대하지 않는다. 쿠키를 사용할 수 없을 때 사용자 로그인을 완전히 허용하지 않는 것 외에 다른 접근법이 무엇인지 확신 할 수 없습니다. 유일하게 진정한 보안 방법입니까?
UPDATE
T.J.을 바탕으로 Crowders는 최근 통계를 보면 2 %의 사용자가 쿠키를 차단 한 것으로 나타났습니다. 여러 가지 이유로 쿠키를 사용하기로 결정하고 쿠키가 차단되어 세션 상태를 관리 할 수 없을 때 경고를 표시합니다.
querystring 메서드를 사용하면 북마크, 친구에게 전자 메일로 보내는 등의 문제가 발생합니까? – ryandlf
@ryandlf : 예, 문제가 발생합니다. 그러나 이것은 쿠키없이 세션을 추적하는 유일한 방법입니다. 쿠키를 차단하는 사용자가 있습니까? 그들에 대한 관심은 충분합니까? –
@ryandlf : 그렇습니다. 최소한 세션 ID가있는 책갈피가있는 사람들이 있습니다. 다음을 완화 할 수 있습니다. 존재하지 않는 세션의 토큰이 무시됩니다 (정상적으로 처리됨). 그리고 세션의 IP를 서버 측 세션 상태로 저장 한 다음 다른 IP에서 요청이 들어오는 경우 토큰을 무시하고 (토큰이 유효한 세션을위한 경우에도) 정상적으로 다시 처리합니다. –