Django 보안 사용자 세션

머리말



Web App에 대한 일반적인 공격 벡터 중 하나는 세션 하이재킹입니다. 세션 하이재킹은 인증된 사용자 세션이 해커에 의해 획득될 수 있음을 의미합니다. 이것은 일반적으로 사용자가 해커에 의해 손상된 공용 Wi-Fi/LAN을 사용하는 경우와 같은 MITM(Man In The Middle) 공격으로 인해 발생합니다.

HTTPS 연결을 사용하면 브라우저와 서버 간의 모든 통신이 암호화되고 HSTS(HTTP Strict Transport Security)를 설정하면 브라우저와 서버 간의 첫 번째 연결에 대한 모든 후속 통신이 HTTPS 연결만 사용하도록 합니다. 첫 번째 통신은 일반적으로 브라우저가 HTTP 사이트에 요청한 다음 HTTPS 사이트로 리디렉션되기 때문입니다. HSTS는 또한 보안 HSTS 기간이라는 것을 지정합니다. 이는 HSTS 정책을 설정한 브라우저와 서버 간의 첫 번째 접촉에서 x초 후에 만료됨을 의미합니다.

귀하의 사용자가 귀하의 웹사이트에 로그인되어 있을 가능성이 적다면, 창을 닫고 x초(HSTS 두 번째 재발) 동안 아무 작업도 하지 말고 공용 Wi-Fi를 통해 인터넷에 연결하십시오. Fi, Google로 이동하여 "해커"가 사용자 세션 쿠키를 스니핑할 수 있는 HTTP 페이지에서 웹사이트에 연결하고 나중에 사용자를 모방하여 당사 사이트에서 사용 권한을 부여합니다.

내가 거기에서 말했듯이, 작은 기회가 있지만 당신은 아마도 태양계의 8개 행성 모두가 극동에서 불어오는 100km/h의 풍속으로 너무 많은 힘을 가진 작은 나비는 기본적으로 한 달 동안 전체 웹 사이트를 다운시키고 엄청난 1억 건의 소송을 일으키는 파급 효과를 일으킵니다. 제가 여기서 말하려는 것은, 미안하지만 안전한 것이 더 낫다는 것입니다.

이 공격 벡터를 더 줄이려면 django-restricted-sessions이라는 Django 패키지를 사용하는 것이 좋습니다. 그것이 우리 문제에 대한 모든 해결책은 아니지만 제 생각에는 그러한 패키지를 추가하는 것이 더 낫습니다. 구현하기가 너무 간단하고 잘 알고 있습니다. 언젠가는 구현하고 잠시만 있으면 자신에게 감사하게 될 것입니다. 어느 날 정보 보안 위원회 앞에 서서 웹 앱을 보호하기 위해 가능한 모든 예방 조치를 취했다고 말해야 하는 기회가 있을 수 있습니다. 이것이 소송에서 이기는 데 필요한 것 중 하나일 수 있습니다.

어쨌든 django-restricted-sessions는 완벽하지는 않지만 완벽한 해커가 쉽게 들어오는 것을 막는 문서 상태에서도 방탄이 아닙니다 ...



이 패키지에 대해 너무 많이 이야기해서 설치하고 구성해야 할 것 같습니다...

django-restrict-sessions 설치



터미널에서 단 2줄의 명령만 있으면 됩니다.

pipenv install django-restricted-sessions
pipenv lock -r > requirement.txt



미들웨어 설정



setting.py 파일을 열고 간단한 줄을 추가합니다.

'restrictedsessions.middleware.RestrictedSessionsMiddleware',


미들웨어가 둘 다 뒤에 있는지 확인하십시오.

'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',


그렇게 :

MIDDLEWARE_CLASSES = [
    ....
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'restrictedsessions.middleware.RestrictedSessionsMiddleware',
    ....
]




그것으로 간단합니다. 이제 세션 하이재킹의 경우 웹앱이 조금 더 안전하다는 사실에 대해 조금 더 잘 느낄 수 있습니다.

좋은 웹페이지 즐겨찾기