URL 매개변수와 같은 사용자 제공 데이터는 항상 신뢰할 수 없고 오염된 것으로 간주해야 합니다. 오염된 데이터에서 직접 쿠키를 만들면 공격자가 세션 식별자를 알려진 값(Set-Cookie, sessionId )으로 설정하여 공격자가 공격 대상자와 세션을 공유할 수 있습니다. 공격이 성공하면 공격 대상자가 인증할 때 세션 식별자가 재생성되지 않는 경우, 중요한 정보에 무단으로 액세스할 수 있습니다.
일반적으로 이러한 유형의 공격을 예방하는 방법은 허용 목록의 영향을 받을 수 있는 쿠키를 제한하는 것입니다.
규칙을 어긴 코드
from django.http import HttpResponse
def index(request):
value = request.GET.get("value")
response = HttpResponse("")
response["Set-Cookie"] = value # 규칙을 어긴 코드
response.set_cookie("sessionid", value) # 규칙을 어긴 코드
return response
규칙을 준수한 해결책
from django.http import HttpResponse
def index(request):
value = request.GET.get("value")
response = HttpResponse("")
response["X-Data"] = value
response.set_cookie("data", value)
return response
같이보면 좋은 자료
- OWASP Top 10 2021 Category A3 - 인젝션
- OWASP Top 10 2017 Category A1 - 인젝션
- MITRE, CWE-20 - 부적절한 입력 검증
-
MITRE, CWE-384 - 세션 고정
If you like SONARKUBE, don’t forget to give me a star.