서버에 의한 강제적 인 강제 설치는 원하지 않지만 사용자 친화적이지 않기 때문에 보안 문자를 사용하고 싶지는 않습니다. 다른 회사에 의존하고 싶지 않습니다. - 내 자신의 captcha 시스템을 구현하지 않을 것이기 때문에.SQL을 사용하여 로그인 시도를 잠그는 방법
나는이 구조와 attempts
테이블을 만들 생각했습니다
________________________________________________________________
| IP | ATTEMPTS | LOCK |
|‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾|
| 1.1.1.1 | 0 | 2 |
| .... | .... | .... |
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ Yes I had fun making this
그리고 사용자가 2 배 잠금 시간을 증가 0 로 재설정하기 전에, 5-10 시도하자 - 몇 분 안에있어.
무차별 대항력을 차단하는 좋은 방법입니까?
내가 내 서버에서이 같은 로직이있을 것이다 : - 나는 기본적으로 SQL에서이 작업을 수행 할 수있는보다 효율적인 방법이 느낌이
....
* on request to server do below *
db.query("SELECT * FROM attempts WHERE IP= *REQUEST.IP* ",function(result){
if (result.rows.length > 0 && result.rows[0].attempts > 5) {
if (CheckIfExpired(results.rows[0].lock)) {
if (loginFail) MultplyLockBy2();
else RemoveFromAttemptsTable();
} else res.status("403").send("You're locked out");
} else normalLoginAttempt().ifFal(add1toAttempts());
....
를 추출, 나는 SQL과 초보자입니다. (postgresql을 사용하고 있습니다).
이 글을보고 나서 시작 시간 필드가 필요하다고 생각한 것입니다. 잠금이 만료 된 시점을 계산할 수 있습니다.
ASP.net + Njinx/아파치 + 세션 + ...! = Node.js를 + SQL
@NeilMcGuigan 이것은 확실히 ASP.Net 질문의 중복이 아닙니다. –
승인되지 않은 호출 (즉, 공격자가 디스크를 채울 수 있습니다. 각 통화마다 고유 한 사용자 이름). 나는'fail2ban'과 같은 것을 쉽게 이용할 수없는 Windows paltform *에 대한 귀하의 대답 *을 고려할 것입니다. Linux 환경에서 실행되는 nodejs 앱의 경우 이미 더 나은 솔루션 준비, 테스트 및 널리 사용됩니다. –
나는 정말로 혼란 스럽다. 나는 fail2ban을 구현할 수 있다고 생각한다; 항상 사용자가 captcha없이 계정에 다시 연결할 수 있도록하는 쿠키를 구현합니다. 또한 잠금 기능과 함께 captcha를 사용할 수도 있습니다. 이게 좋은 해결책인가? –