사용자 이름과 암호가 필요한 로그인 시스템이 있습니다. 일정량의 로그인 시도 실패 후 보안 문자를 표시하고 싶습니다. 이것을 구현하는 올바른 방법은 무엇입니까? 나는이 사이트를 읽었으며 몇몇 해결책은 users 테이블에 'failed-attempts-count'가 추가되는 것이 좋습니다. 그러나 실패한 시도가 특정 사용자에게 연결되지 않아야합니다. 즉, 입력 한 사용자 이름이 시스템에 있는지 여부에 관계없이 보안 문자를 표시하고 싶습니다. 이 변수를 세션 변수에 저장하는 것이 좋습니다 (PHP를 사용하고 있습니까)? 그렇다면 세션 변수에 필요에 따라 데이터를 던지는 단점이 있습니까? 나는이 세션 ID에 대한 로그인 시도를 관련시키는 표를 만들 수 있도록 사이트의 모든 방문자 (이미 로그인했거나 로그인하지 않은 사용자)에 대해 이미 세션 ID를 보유하고 있습니다 ... 가장/가장 안전한 접근 방법에 대한 아이디어가 있습니까? 감사.사용자와 상관없이 로그인 시도를 제한 하시겠습니까?
업데이트 : 업데이트 : 세션 ID가 해커가 단순히 캐시를 지울 수 있기 때문에 가장 좋은 아이디어는 아닌 것 같습니다 (단,이 사실은 문제가됩니다. 쓸모 없게 만들 정도로?). 다른 옵션은 IP입니다 ...하지만 실패한 시도가 공유되기 때문에 인트라넷이나 프록시 아래의 사용자에게는 주저합니다 .... 나는 다른 방법을 생각할 수 없습니다. 당신이 할 수 있습니까?
맞아요.하지만 captcha의 생각은 자동으로 무차별 공격을 막는 것입니다. 브라우저가 닫히지 않거나 모든 시도가 끝나면 캐시를 지우지 않을까요? – oym
당신은 사용자 당 실패한 시도를 저장한다고 말합니다 - 이는 유효한 사용자 ID가 입력되면 실패한 시도 카운터가 증가한다는 것을 의미합니까 (사용자 ID와 암호가 모두 유효하지 않은 경우에는 표시되지 않습니다)? – oym
잘 자동화 된 무차별 대입 공격은 WebClient 개체를 쉽게 파괴하고 모든 시도에 대해 새로운 공격을 생성 할 수 있습니다. 두 번째 부분에 대해서는 사용자 ID가 유효하지 않은 경우를 대비하여 세션 객체 내에 두 번째 폴백 보안 계층을 구현할 수 있습니다. 그러나 사용자 단위로 해킹 시도를 저장하면 IP 주소를 차단하는 것 이상의 작업을 수행 할 수 있으므로 실제적으로 PW를 변경하고 사용자의 이메일 주소로 이메일을 보낼 수 있습니다 (전 블리자드가 전에 보았습니다). – Blindy