문제

Login.aspx 및 Secret.aspx : 2 페이지 만있는 간단한 사이트가 있다고 상상해보십시오. 귀하의 사이트는 ASP.NET 양식 인증 및 ASP.NET 로그인 서버 컨트롤을 사용하여 로그인을 사용하여 안전합니다. 세부 사항은 다음과 같습니다.

  • 이 사이트는 sqlmembershipprovider를 사용하도록 구성되었습니다
  • 이 사이트는 모든 익명 사용자를 거부합니다
  • 쿠키가 비활성화되어 있습니다

보안과 관련하여 고려해야 할 많은 것들이 있지만 .NET 프레임 워크와 함께 제공되는 상자 제로 코드 경험에 더 관심이 있습니다.

이 질문을 위해 로그인의 사용자 이름/비밀번호 텍스트 상자 인 유일한 공격 포인트 인 경우 해커가 비밀을 액세스 할 수있는 해커를 주입 할 수 있습니까?

Microsoft가 제공하는 상자 외부 경험이 제로 코드 외 경험은 얼마나 안전합니까?

도움이 되었습니까?

해결책

여전히 설명되지 않은 일부 변수가 있습니다.

  • 회원 공급자가 사용하는 데이터 스토어에 대한 보안 (이 경우 SQL Server 데이터베이스).
  • 동일한 IIS에서 호스팅 된 다른 사이트의 보안
  • 사이트를 호스팅하는 데 관련된 기계의 일반 네트워크 보안 또는 사이트가 호스팅되는 동일한 네트워크에서
  • 사이트를 호스팅하는 기계의 물리적 보안
  • 인증 트래픽을 암호화하기 위해 적절한 조치를 사용하고 있습니까? (https/ssl)

이러한 모든 문제가 MS에 따라 다르지는 않지만, 관리하지 않으면 필요한 문제를 쉽게 능가 할 수 있기 때문에 언급 할 가치가 있습니다. 그러나 귀하의 질문의 목적을 위해 나는 그들에게 아무런 문제가 없다고 가정 할 것입니다.

이 경우 양식 인증이해야 할 일을 할 것이라고 확신합니다. 나는 현재 활발한 악용이 있다고 생각하지 않습니다.

다른 팁

내가 아는 한 비밀번호는 일반 텍스트로 전송됩니다 (그러나 인코딩). 따라서 가장 중요한 것은 로그인 화면에서 HTTPS 프로토콜을 사용하는 것입니다.

다른 설정은 저에게 안전한 것 같습니다.

HTTP 기본 인증을 사용하면 .NET 기본 형식 인증이 사용하는 것입니다. Secret.aspx 페이지를보기 위해 브라우저는 사용자 이름과 비밀번호의 Base64 인코딩 된 연결을 보내야합니다.

SSL을 사용하지 않는 한 서버와 브라우저 간 네트워크를 스캔 할 액세스 권한이있는 사람은이 정보를 읽을 수 있습니다. 사용자 이름과 비밀번호를 디코딩 할 수 있습니다. 미래에 사용자 이름과 비밀번호를 재생하여 Secret.aspx 페이지에 액세스 할 수 있습니다.

즉, SSL을 사용하지 않으면 누군가는 Secret.aspx를 사용하여 다른 사람의 전체 세션을 스캔 할 수도 있으므로 실제로 페이지의 내용에도 액세스 할 수 있습니다.

글쎄, 무대 뒤에서 시도하고보십시오.

비밀번호 보안

데이터베이스에 사용자 이름, 암호 및 기타 인증 정보를 저장하는 응용 프로그램은 데이터베이스를 도난 당하거나 손상시키지 않도록 비밀번호를 일반 텍스트로 저장해서는 안됩니다. 이를 위해 SQLMembershipprovider는 비밀번호 및 비밀번호 답변에 대한 세 가지 스토리지 형식 ( "인코딩")을 지원합니다. PasswordFormat 구성 속성에서 초기화 된 제공자의 PasswordFormat 속성은 사용되는 형식을 결정합니다.

  • 비밀번호와 비밀번호 답변을 일반 텍스트로 저장하는 Membershippasswordformat.clear.
  • Membershippasswordformat.hashed (기본값)는 비밀번호 및 비밀번호 답변에서 생성 된 소금에 절인 해시를 저장합니다. SALT는 .NET Framework의 rngcryptoserviceprovider 클래스에 의해 생성 된 임의의 128 비트 값입니다. 각 비밀번호/비밀번호 답변 쌍은이 고유 한 값으로 소금을 내고 소금은 ASPNET_Membership Table의 PasswordSalt 필드에 저장됩니다. 암호를 해싱 한 결과와 소금이 암호 필드에 저장됩니다. 마찬가지로, 암호 대답을 해싱 한 결과와 소금은 PasswordAnswer 필드에 저장됩니다.
  • 암호화 된 비밀번호 및 비밀번호 답변을 저장하는 Membershippasswordformat.encencted. sqlmembershipprovider는 구성 섹션의 암호 해독 키 속성에 지정된 대칭 암호화/암호 해독 키를 사용하여 암호 및 비밀번호 답변을 암호화하고 구성 섹션의 붕괴 속성에 지정된 암호화 알고리즘을 사용합니다. sqlmembershipprovider는 비밀번호와 비밀번호 답변을 암호화하라는 요청과 암호 해독 키가자가 생성으로 설정된 경우 예외를 제외합니다. 이는 암호화 된 비밀번호가 포함 된 멤버십 데이터베이스와 다른 서버 또는 다른 응용 프로그램으로 이동하면 유효하지 않도록하는 것을 방지합니다.

따라서 보안 강도 (상자 밖에서)는 사용중인 암호 보호 형식 전략에 따라 다릅니다.

  • 명확한 텍스트를 사용하는 경우 시스템을 해킹하는 것이 더 쉽습니다.
  • 반면에 암호화 된 것을 사용하면 보안은 기계에 대한 물리적 액세스 (또는 최소한 machine.config)에 의존합니다.
  • 해시 암호 (기본값)를 사용하면 다음에 따라 보안을 보장합니다.

기본 해시베이스 시스템에 일종의 무지개 테이블 해킹을 사용할 수 있는지 모르겠습니다.

자세한 내용은이 링크를 확인하십시오.http://msdn.microsoft.com/en-us/library/aa478949.aspx

멤버십 제공 업체를 통해 올바르게 구성되면 적절한 수준의 보안이 있습니다. 그 외에도 대조군의 공격을 통해 해당 페이지에 대한 액세스에 액세스 할 수 있지만 일반적인 보안과 관련이 있습니다. 나는 사용에 대한 프레젠테이션을했다 보안 엔터프라이즈 응용 프로그램 차단. 당신은 그것들을 읽고 사이트에서 보안을 구현할 때 그것을 조사하고 일반적인 보안 위협을 알고 싶을 수도 있습니다. 공개 공유 네트워크에 있고 총 보안이 군대가 24/7에 안전하게 고정 된 플러그 서버 (DoD) "오렌지 북에 기반을 둔 상태 보안에 고정 된 분리 된 서버가 될 때는 100%의 사이트가 없습니다. ). 그러나 멤버십 제공 업체의 상자 기능 (올바르게 구성된 경우)은 많은 양의 보안을 제공합니다.

편집 : 예, 패킷 스니퍼 및 네트워크 모니터로부터 사용자 이름/암호를 보호하려면 최소한 로그인 화면의 HTTPS가 주어진 다른 의견에 동의합니다.

ASP.NET은 Cookieless 세션을 지원합니다 이 블로그 게시물이 보여줍니다. 세션 쿠키 대신 URL에서 식별자를 사용하여 사용자를 추적합니다.

나는 이것이 얼마나 안전한 지 잘 모르겠지만, 정체성 문자열을 무너 뜨리는 데 어려움이 있기 때문에 그것이 안전하다고 생각할 것입니다.

상자에서 다소 작동하는 것처럼 보이지만 사용자를 리디렉션하고 세션 상태를 유지하려면 세션 ID를 포함해야합니다. 블로그 게시물은 웹의 다른 많은 기사뿐만 아니라이를 수행하는 방법을 보여줍니다.

URL을 통한 쿠키는 충분히 안전하지 않으며, IT에는 많은 문제 (특히 참조 자 누설) 및 HTTPS 사용이 너무 많습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top