>백엔드 개발 >PHP 튜토리얼 >귀하의 웹사이트가 등록 기계에 의해 공격당하는 것을 방지하는 방법

귀하의 웹사이트가 등록 기계에 의해 공격당하는 것을 방지하는 방법

WBOY
WBOY원래의
2016-09-19 09:16:281587검색

현재 보호는 휴대폰 인증번호와 토큰 인증인데, 등록 기계에서는 1시간에 한 번씩 동일한 IP도 등록해 주는데 다른 방법은 없을까요?

답글 내용:

현재 보호는 휴대폰 인증번호와 토큰 인증인데, 등록 기계에서는 1시간에 한 번씩 동일한 IP도 등록해 주는데 다른 방법은 없을까요?

저는 중국어를 잘 못해서 질문을 이해하지 못합니다!

예전에 친구가 인터넷에서 찾은 인증코드 생성 프로그램을 사용해서 하나 썼는데, 너무 많은 사람이 사용하는 것 같은데 막지 않더군요. 나는 개인적으로 문제를 해결하기 위해 JS를 선호합니다. 마침내 이 솔루션을 사용한 후에는 더 이상 문제가 없었습니다.

TokenCode, 로봇이 제출 등록을 시뮬레이션하는 것을 방지
TokenCode는 데모 스크립트를 사용합니다

<code><?php
    #=====================================================================
    #=                 Copyright (c) 2015 猫七(QQ:77068320)              =
    #=                      All rights reserverd.                        =
    #=====================================================================
    #=           TokenCode 防模拟提交程序 类(PHP版本)                    =
    #=  使用说明:http://www.miaoqiyuan.cn/products/tokencode/last.zip   =
    #=  演示地址:http://www.miaoqiyuan.cn/products/tokencode/           =
    #=  使用说明:http://www.miaoqiyuan.cn/p/tokencode                   =
    #=  邮箱地址:mqycn@126.com   QQ:77068320 1301425789                =
    #=====================================================================
     
    class TokenCode {
        public $value, $code ;
        public $OperationList;
        public function __construct() {
            $resultValue = $this -> RandomKey($this -> RandomIntger());
            $resultCode = "'" . $resultValue . "'";
            $this -> OperationList = Array("+", "-" ,"*");
             
            for( $i = 0 ; $i < $this -> RandomIntger() + 3; $i++){
                $op =  $this -> RandOperation();
                switch($op){
                    case "+":
                    case "-":
                        $random = $this -> RandEquations();
                        $resultValue .= $random["value"];
                        $resultCode .= "+(" . $random["code"] . ")";
                        break;
                    default:
                        $random = $this -> RandomKey($this -> RandomIntger());
                        $resultValue .= $random;
                        $resultCode .= "+'" . $random . "'";
                        break;
                }
            }
             
            $rnd1 = $this -> RandomIntger();
            $rnd2 = $this -> RandomIntger() + 8;
            $this -> value = substr($resultValue, $rnd1, $rnd2);
            $this -> code = "(" . $resultCode . ").substring(" . $rnd1 . "," . ($rnd1 + $rnd2) . ")";
        }
         
        private function RandEquations(){
            $va = $str = $this -> RandomLong();
            $this -> OperationList = Array("+", "-" ,"*");
             
            for( $i = 0 ; $i < $this -> RandomIntger(); $i++){
                $op =  $this -> RandOperation();
                $vb = $this -> RandomLong();
                switch($op){
                    case "+":
                        $va += $vb;
                        $str .= "+" . $vb;
                        break;
                    case "-":
                        $va -= $vb;
                        $str .= "-" . $vb;
                        break;
                    case "*":
                        $va *= $vb;
                        $str = "(" . $str . ")*" . $vb;
                        break;
                }
            }
            return Array(
                "code" => $str,
                "value" => $va
            );
        }
         
        private function RandOperation(){
            return $this -> OperationList[rand() % count($this -> OperationList)];
        }
         
        private function RandomIntger(){
            return (int)substr(rand(), 1, 1) + 1;
        }
         
        private function RandomLong(){
            return (int)substr(rand(), 1, 3) + 1;
        }
         
        private function RandomKey($len = 10){
            return substr(md5(rand()), 1, $len + 5);
        }
         
    }
?>
</code>

전화 방법:

<code><?php
    require("TokenCode.php");
    $token = new TokenCode();
    $tokenValue = $token -> value ;
    $tokenCode = $token -> code ;
         
    //代码段
        $_SESSION["_TOKENCODE"] = $token -> value ;
         
    //代码段
    echo '<script type="text/javascript">_TOKENCODE=' . $token -> code . ';</script>';
?></code>

세션을 저장한 후 검증 페이지로 이동하여 제출된 코드와 검증 결과를 확인합니다. 프로그램 변경 사항은 거의 없으며 js만 변경하면 됩니다.

<code>#AJAX方式
$.post("/", {mob : $("#mob").val() , token : _TOKENCODE }, function(){ } );
 
#URL方式
$("#send").click(function(){
    if(this.href.indexOf('&token=')==-1){
        this.href+='&token=' + _TOKENCODE
    };
});</code>

IP 제한 및 고강도 인증코드

가상번호로 등록하셨나요?

등록기계에서는 빈번호를 다 등록했는데 인증번호가 옵니다

이게 어떤 등록 기계이고, 어떤 휴대전화 번호인지 설명해 주실 수 있나요?

내가 생각한 방법
방법 1. 등록 시 인증 레이어 추가: 12306 사진 선택, 타오바오 슬라이딩 모듈 + 배경 이미지
방법 2. 얼굴 인식 등 생체 인식 추가, 입술 움직임 감지, 생체 인식을 통과해야만 실제로 사용자가 생성됩니다.

국내 WeBank는 자체 앱에서 생체 감지 기술을 사용했지만, 이 기술은 현재 상대적으로 보안 요구 사항이 높은 시나리오에서 주로 사용되며 보조 확인 수단으로만 사용되며 100% 종속이 아닙니다. 효과는 여전히 좋다.

인증번호를 입력하거나 IP 제한을 추가하면 동일한 IP를 연속으로 등록할 수 없습니다

인증코드 받는 방법을 변경해보세요.
음성으로 인증 코드를 받으세요. 웹 페이지에 휴대폰 번호를 입력한 후 통화 플랫폼을 사용하여 휴대폰 소유자에게 음성 통화를 겁니다.

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