>백엔드 개발 >PHP 튜토리얼 >다른 사람이 인증 코드를 긁는 것을 방지하는 방법은 무엇입니까?

다른 사람이 인증 코드를 긁는 것을 방지하는 방법은 무엇입니까?

WBOY
WBOY원래의
2016-10-19 10:40:521493검색

핏상품에서 설계한 회원가입/로그인은 휴대폰 인증코드를 얻을 수 있으나 그래픽 인증코드는 없습니다. 이제 인증 코드를 받기 위한 인터페이스가 여러 번 스와이프되었습니다. 지난 한 시간 동안 수천 건의 요청이 있었고, 모두 다른 IP와 다른 휴대폰 번호에서 왔습니다....

그래픽 인증 코드를 추가하는 것 외에도 스와이프를 방지할 수 있는 방법이 있나요?

답글 내용:

핏상품에서 설계한 회원가입/로그인은 휴대폰 인증코드를 얻을 수 있으나 그래픽 인증코드는 없습니다. 이제 인증 코드를 받기 위한 인터페이스가 여러 번 스와이프되었습니다. 지난 한 시간 동안 수천 건의 요청이 있었고, 모두 다른 IP와 다른 휴대폰 번호에서 왔습니다....

그래픽 인증 코드를 추가하는 것 외에도 스와이프를 방지할 수 있는 방법이 있나요?

그래픽 인증코드 빼고 생각나는 건:

  1. 휴대폰번호 기준으로 하루에 휴대폰당 최대 N개의 인증코드를 보낼 수 있습니다. LZ가 이미 이 내용을 추가한 것 같습니다.

  2. IP 기준으로 각 IP당 하루 최대 N개의 인증코드 전송이 가능하도록 제한... -- 단점: 실수로 일반 사용자를 죽이기 쉬우니 주의해서 사용하세요

  3. [궁극적 방법] 사용자 행동 빅데이터 분석을 기반으로

사용자 행동을 기반으로 분석하는 방법은 무엇입니까? 간단한 방법을 생각했어요:

먼저 일반 사용자는 인증 코드 요청을 보내는 것 외에도 CSS/JS/HTML/이미지 등 페이지의 다른 리소스에도 액세스해야 합니다.

그러나 브러시라면 이러한 리소스에 구체적으로 액세스하지 않을 수도 있습니다.

따라서 사용자가 페이지에 접속하면 human 매개변수가 session에 기록될 수 있으며, 사용자가 페이지에서 리소스를 요청할 때마다 human += 1이 됩니다. 인터페이스가 인증 코드를 보낼 때 human 매개변수를 꺼내서 그 값이 무엇인지 확인하세요. 일반 사용자의 경우 human 값이 특정 값(예: 5)보다 커야 합니다. 브러시보다 작습니다. (0의 것은 당연히 브러쉬입니다)


내가 말한 것은 비교적 간단합니다. 더 복잡한 경우에는 여러 요청 사이의 간격, 로그인 또는 등록 버튼을 클릭하기 전 마우스의 이동 궤적, 마우스를 누르고 닫은 시간 등을 기록할 수 있습니다. 분석하다.

한 번의 클릭으로 사람이나 기계를 자동으로 식별하는 Google과 같은 reCAPTCHA를 인용하거나 복사할 수 있다면 좋을 것입니다.

뉴울프 전자레인지처럼~ 아이디와 비밀번호가 있어야만 인증말이 발송됩니다.


문제는 휴대폰 인증번호를 통한 로그인 기능은 절대 비밀번호를 추가할 수 없다는 점입니다. 등록된 비밀번호는 아무렇게나 입력하셔도 큰 의미는 없습니다

@locatejoe

비밀번호를 표시하는 대신 사용자 이름과 비밀번호를 MD5 값으로 가져와 함께 연결하고 해시한 다음 BloomFilter와 유사한 필터에 매핑합니다.
bloomFilter가 不存在을 반환하면 확인 말이 전송되지 않습니다.
bloomFilter는 많은 공간을 차지하지 않으며 매우 빠릅니다.

이전에 이 문제가 발생한 적이 있습니다.

2일 만에 20,000개 이상의 메시지가 업로드되었습니다

해결책:

1. 그래픽 인증 코드 추가
2. 동일한 IP 주소를 결정하고 동일한 휴대폰은 일정 시간 동안 3개의 메시지만 보낼 수 있습니다(친절하지는 않지만)
3. 30분 후에도 마찬가지입니다.

휴대폰과 IP가 전송되지 않습니다.

어쨌든 여러 가지 방법이 있으니 한번 시도해 보세요

IP와 휴대폰 번호가 다를 경우에는 그래픽 인증코드를 추가하시면 됩니다. . .

  • 그래픽 인증코드를 추가하고, 폰트 색상도 너무 단조롭게 만들지 마세요.

  • 문자 메시지가 전송된 후 일정 시간 간격이 필요합니다. 프론트엔드 쿠키가 이를 판단하여 PHP가 별도로 저장합니다.

  • 요청한 IP 주소와 휴대폰 번호를 인터페이스에서 확인해야 합니다. 지난 시간 간격이 너무 짧아서 보낼 수 없습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.