백엔드 개발 PHP 튜토리얼 PHP는 CC 공격 코드를 방지합니다. PHP는 웹 페이지의 빈번한 새로 고침을 방지합니다._php 팁

PHP는 CC 공격 코드를 방지합니다. PHP는 웹 페이지의 빈번한 새로 고침을 방지합니다._php 팁

May 16, 2016 pm 08:02 PM
CC 공격 php

웹 페이지가 악의적으로 빠르게 새로 고쳐집니다. cc 공격은 공격자가 프록시 서버를 사용하여 대상 사이트로 향하는 합법적인 요청을 생성하여 여러 사용자가 피해자 웹 사이트에 지속적으로 액세스하도록 시뮬레이션하는 것입니다. 특히 많은 양이 필요한 페이지에 액세스합니다. 많은 양의 CUP 시간이 필요하며 결국 충돌이 발생할 때까지 대상 웹 사이트 서버 리소스가 소진됩니다. 이로 인해 CPU가 오랫동안 100% 상태가 됩니다. 네트워크가 정체되어 정상적인 접속이 차단될 때까지 항상 연결이 완료되지 않습니다. 우리는 이를 CC 공격이라고 부릅니다. 이를 달성하기 위해 일부 공격 방지 소프트웨어를 사용할 수 있지만 효과가 명확하지 않은 경우도 있습니다.

아래에서는 CC 공격을 어느 정도 예방할 수 있는 PHP 코드를 제공합니다.
주요 기능: 3초 내에 5회 이상 페이지를 계속해서 새로 고치면 이 머신을 가리킵니다 http://127.0.0.1
CC 공격을 방지해야 하는 페이지에 이 코드를 넣으면 됩니다.
소스코드

<?php
$timestampcc = time();
$cc_nowtime = $timestampcc;
if(session_is_registered('cc_lasttime')){
 $cc_lasttime = $_SESSION['cc_lasttime'];
 $cc_times = $_SESSION['cc_times']+1;
 $_SESSION['cc_times'] = $cc_times;
}else{
 $cc_lasttime = $cc_nowtime;
 $cc_times = 1;
 $_SESSION['cc_times'] = $cc_times;
 $_SESSION['cc_lasttime'] = $cc_lasttime;
} 
if(($cc_nowtime-$cc_lasttime)<3){//3秒内刷新5次以上可能为cc攻击
 if($cc_times>=5){
 echo '刷新太快!';
 exit;
 }
}else{
 $cc_times = 0;
 $_SESSION['cc_lasttime'] = $cc_nowtime;
 $_SESSION['cc_times'] = $cc_times;
} 
?>
로그인 후 복사

다음은 PHP에서 CC 공격을 방지하는 효과적인 방법입니다.

1.세션 기록
submit.php는 전송 페이지입니다. 이 페이지에 세션 변수를 설정하여 submitdeal.php 페이지에 숨겨진 필드와 양식으로 보냅니다. 서버 측에서 게시된 숨겨진 변수와 서버 측에 기록된 세션 변수를 비교합니다. 예를 들어 두 값이 동일하면 데이터베이스에 쓰고 세션을 지우고 사용자가 페이지를 새로 고치면 두 값이 같지 않으면 오류가 발생하거나 점프하라는 메시지가 표시됩니다.
장점: 사용자가 인증 코드를 입력할 필요가 없습니다
단점: 양식 복사가 용이함
2.인증코드
세션 데이터를 숨겨진 필드로 제출하지 않고 사용자가 입력하도록 하는 점만 제외하면 원칙은 첫 번째와 동일합니다. 대부분의 웹사이트에서는 텍스트 인증코드와 사진 인증코드, 사진을 사용합니다. 인증 코드는 매우 안전합니다.

3.IP 바인딩
데이터를 제출한 후 먼저 IP 테이블에서 클라이언트 IP를 검색합니다. 클라이언트 IP가 존재하고 만료되지 않은 경우 오류가 보고됩니다. 그런 다음 객실 IP가 검색됩니다. 데이터베이스에 기록됩니다.
4.cookie:클라이언트가 제출한 후 처리 프로그램은 먼저 클라이언트가 쿠키를 설정했는지 검색합니다. 쿠키가 설정되어 있지 않으면 다시 제출하지 않고 데이터를 작성한 다음 쿠키를 작성합니다. ;
예:

사용자의 무의미한 잦은 점프와 요청은 서버에 많은 부담을 주게 됩니다. 실제로 쿠키를 사용하면 이를 방지할 수 있습니다.

<?php 
error_reporting(0); 
//if($_COOKIE["ck"])die("刷新过快!"); 
if($_COOKIE["ck"])header("Location:http://www.baidu.com");//这里如果用户刷新过快,给予终止php脚本或者直接302跳转 
setcookie("ck","1",time()+3);//设定cookie存活时间3s 
echo "hello!"; 
?>
로그인 후 복사

방법 1:

<?php  
session_start();  
$k=$_GET['k'];  
$t=$_GET['t'];  
$allowTime = 1800;//防刷新时间  
$ip = get_client_ip();  
$allowT = md5($ip.$k.$t);  
if(!isset($_SESSION[$allowT]))  
{  
 $refresh = true;  
 $_SESSION[$allowT] = time();  
}elseif(time() - $_SESSION[$allowT]>$allowTime){  
 $refresh = true;  
 $_SESSION[$allowT] = time();  
}else{  
 $refresh = false;  
}  
?> 
로그인 후 복사

방법 2:

<? 
session_start(); 
if(!emptyempty($_POST[name])){ 
 $data = $_POST[name]; 
 $tag = $_POST[tag]; 
 if($_SESSION[status]==$tag){ 
 echo $data; 
 }else{ 
 echo "不允许刷新!"; 
 } 
} 
$v = mt_rand(1,10000); 
?> 
<form method="post" name="magic" action="f5.php"><input type="hidden" 
name="tag" value="<?=$v?>"><input type=text name="name"><input type="submit" value="submit"> 
</form> 
<? 
echo $v; 
$_SESSION[status] = $v; 
?> 
로그인 후 복사
로그인 후 복사

방법 3:

<? 
session_start(); 
if(!emptyempty($_POST[name])){ 
 $data = $_POST[name]; 
 $tag = $_POST[tag]; 
 if($_SESSION[status]==$tag){ 
 echo $data; 
 }else{ 
 echo "不允许刷新!"; 
 } 
} 
$v = mt_rand(1,10000); 
?> 
<form method="post" name="magic" action="f5.php"><input type="hidden" 
name="tag" value="<?=$v?>"><input type=text name="name"><input type="submit" value="submit"> 
</form> 
<? 
echo $v; 
$_SESSION[status] = $v; 
?> 
로그인 후 복사
로그인 후 복사

위 내용은 PHP가 CC 공격을 방지하는 다양한 방법입니다. 웹 페이지의 빠르고 악의적인 새로 고침을 방지하는 데 도움이 되기를 바랍니다.

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

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

CakePHP 날짜 및 시간

CakePHP 프로젝트 구성 CakePHP 프로젝트 구성 Sep 10, 2024 pm 05:25 PM

CakePHP 프로젝트 구성

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

CakePHP 파일 업로드

CakePHP 라우팅 CakePHP 라우팅 Sep 10, 2024 pm 05:25 PM

CakePHP 라우팅

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP 토론

CakePHP 빠른 가이드 CakePHP 빠른 가이드 Sep 10, 2024 pm 05:27 PM

CakePHP 빠른 가이드

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법

See all articles