문제

로그인 시스템 작업 - 고객이 사이트 액세스를 위해 암호를 선택하는 지점.

REGEX를 사용하여 비밀번호가 충분히 강한지 확인하는 것 외에도 일반적으로 데이터베이스에 감을 모든 데이터는 주입 등에 대해 확인되며 모든 필드에서 합리적으로 제한된 문자 세트가 시행됩니다. 비밀번호에 대한 특히 제한적인 문자 세트를 원하지 않습니다. 비밀번호는 너무 많이 제어하기 위해 보안에 약간의 패턴이 있다고 생각하기 때문입니다.

그러나 비밀번호의 경우, 삽입 용 소금에 절인 SHA-512로 해시를 할 것입니다.

  • 고객이 암호에 사용할 수있는 캐릭터 세트를 제한하는 데 어떤 점이 있습니까? 즉, 해싱에 의해 완전히 우회 될 것이라고 가정하는 주입 외부의 취약점에 노출되어 있습니까?

  • 허용 접근 방식에는 부정적인 점이 있어야합니다. 미래에 무고한 조합이 현재 위험한 조합이 될 수 있다는 사실을 생각할 수 있습니다. 진정한 관심사이며, 내가 놓친 다른 사람들이 있습니까?

  • 거부해야 할 문자/문자열이 있습니까?

  • 좀 더 주관적이지만, SHA -512 해시 일 것입니다. 상당한 크기/복잡성의 비밀번호가 그들이 설정하고 싶다는 것을 확인하기 위해 경고합니다.

당신의 도움을 주셔서 감사합니다.

편집 : 이것은 ADO.NET (LINQ/EF가 아님)를 사용하여 MSSQL2008 데이터베이스에 액세스하는 ASP.NET 웹 응용 프로그램입니다.

도움이 되었습니까?

해결책

일반 텍스트 (Danger, Will Robertson, Danger!)로 데이터베이스에 암호를 실제로 삽입하지 않는 한 SQL 삽입 공격에 대해 걱정할 이유는 거의 없으며 쿼리를 매개 변수화하더라도 문제가되지 않습니다. [A-ZA-Z0-9]와 일부 특수 문자 세트를 허용해야합니다. 아마도 제한해야 할 유일한 문자는 '<'이며 ASP.NET 유효성 검사 경고를 트리거합니다. 클라이언트 측에서 암호 복잡성 검사를 수행하기위한 많은 재미있는 도구가 있습니다. 좋아요 이 하나. 입력 할 때 사용자에게 즉각적인 피드백을 제공합니다.

다른 팁

영어 이외의 관점에서 - 비밀번호에 제한이 없어야합니다.

예를 들어, 일본어 스피커를 US-ASCII 문자 세트 사용으로 제한하는 이유는 무엇입니까? 프랑스어 스피커가 악센트 캐릭터를 사용하지 않아야하는 이유는 무엇입니까?

해시가 올바르게 지속된다는 점을 감안할 때이를 제한 할 기술적 인 이유는 없습니다.

암호는 해시되므로 데이터베이스에 16 진수 소진 형식으로 저장됩니다. 따라서 허용 된 문자의 유형을 제한하는 점이 없습니다. 비밀번호에 중국어 편지를 사용하고 싶다면 그렇게 할 수 있어야합니다. 무작위 바이트를 생성하고 암호에 사용하는 Firefox의 확장을 설치 한 경우 그렇게 할 수 있어야합니다. 여기서 교훈은 사용자의 비밀번호를 제한하지 않는 것입니다.

또한 REGEX에는 사용자가 모든 언어의 문자를 사용했는지 여부를 감지 할 수있는 유니 코드 지원이 있습니다. 비밀번호의 강도를 검증 할 때 유용해질 수 있습니다.

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