웹 페이지가 악의적으로 빠르게 새로 고쳐집니다. 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 공격을 방지하는 다양한 방법입니다. 웹 페이지의 빠르고 악의적인 새로 고침을 방지하는 데 도움이 되기를 바랍니다.

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

드림위버 CS6
시각적 웹 개발 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

뜨거운 주제



