User.Identity.Name은 얼마나 강력합니까?
-
21-08-2019 - |
문제
NTLM 인증을 사용하는 ASP.Net MVC 응용 프로그램을 작성 중이므로 사용자는 사이트에 등록할 필요가 없습니다.익명 액세스를 비활성화한 경우 User.Identity.Name을 데이터베이스의 소유권 키로 사용할 수 있습니까?내가 하고 싶은 것은 다음과 같은 검색을 할 수 있는 것입니다.
from station in db.stations where station.user == username select *;
이것은 사용자가 누구인지 확실하게 알 수 있을 만큼 충분합니까? 아니면 불쾌한 사용자가 이름 문자열을 스푸핑하여 액세스해서는 안 되는 데이터에 액세스할 수 있습니까?
해결책
이름은 세션에서 채워지므로 공격자는 사용자의 세션을 하이재킹하고 액세스 권한을 얻으려면 세션 쿠키를 스푸핑해야 합니다.이를 방지하기 위해 ASP.NET 세션 쿠키가 암호화되어 있지만, 공격자가 암호화를 깨기 위해 무제한의 시간을 소비할 수 없도록 반드시 세션이 만료되도록 해야 합니다.쿠키를 httpOnly로 설정하면 브라우저의 악의적인 스크립트가 쿠키에 액세스하는 것을 방지할 수도 있습니다.
여기 참조 ASP.NET 2.0 웹 사이트 보안을 위한 모범 사례를 확인하세요.대부분은 여전히 적용 가능하지만 MVC로 변환해야 할 수도 있습니다.
제휴하지 않습니다 StackOverflow