다수의 악성 머신 제출 공격을 간단하게 예방
먼저 배경에 대해 이야기해 보겠습니다. 기계가 지속적으로 요청을 보내거나 악의적인 제출을 하면 이러한 종류의 공격
最优的策略是判断提交次数,产生动态验证码
, 즉判断ip规定时间内重复发送达到N次弹出验证码
에 대해 서버에 많은 부담을 줄 것입니다. 다음은 실제로 IP를 식별하고 세션 녹화 및 방어를 사용하는 간단한 과정입니다.
IP 식별 및 검증
은
IP 식별
whitelist에 속한 ip, [whitelist 정책: 인트라넷 ip 지정 ip 테이블]을 직접 전달
세션을 사용하여 해당 ip의 요청 타임스탬프를 저장
지정된 기간 내 IP 요청 건수 확인
적절한 조치
<code>/** * 获取和校验ip;同时防止短时间内多次提交 * * @notice :弹出验证码,需要替换掉echo $echo_str 即可。 * @return string :返回校验成功的ip */ protected function getAndCheckIP() { // 获取环境ip if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; // check 环境ip if (!$this->isWhiteList($ip)) { $echo_str = "提交过于频繁,请稍后再试!"; // 构建ip的时间栈数据 if (!is_array($_SESSION[$ip])) { $_SESSION[$ip] = array(); } if (isset($_SESSION[$ip][0])) { $_SESSION[$ip][] = time(); // session 保存时间为6小时。清理session $post_interval_first = time() - $_SESSION[$ip][0]; if ($post_interval_first > 21600) { $_SESSION[$ip] = array(); } // 两次提交小于1s,禁止提交 $post_interval_pre = time() - $_SESSION[$ip][count($_SESSION[$ip]) - 3]; if ($post_interval_pre < 1) { echo $echo_str; exit; }; // 您在10s内已经提交了3请求,禁止提交 $post_interval_third = time() - $_SESSION[$ip][count($_SESSION[$ip]) - 3]; if (isset($_SESSION[$ip][3]) && ($post_interval_third < 10)) { echo $echo_str; exit; } // 您在1分钟期间已经提交了5请求,禁止提交 $post_interval_fifth = time() - $_SESSION[$ip][count($_SESSION[$ip]) - 3]; if (isset($_SESSION[$ip][5]) && ($post_interval_fifth < 60)) { echo $echo_str; exit; } // 6小时内提交10次,禁止提交 if (isset($_SESSION[$ip][10])) { echo $echo_str; exit; } } else { $_SESSION[$ip][] = time(); } } return ($ip); } </code>
화이트리스트 전략
화이트리스트 전략 채택: 인트라넷 IP 공개 및 특정 IP 공개
<code>/** * 检验是否存在于白名单中 * * @param $ip :校验的ip * @return bool :校验结果 */ function isWhiteList($ip){ /** * 内网ip默认全部存在于白名单中 */ if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)){ return true; } // 是否在写死的whitelist 里面 return in_array($ip,$this->_WHTTE_LIST); } </code>
공격 방지 전략
Xiaoya는 위 코드와 같이 비교적 간단한 전략을 채택합니다. 실제 프로세스에서 비즈니스가 필요합니다.
1초 이내 반복제출 금지
5초 이내 최대 3회 제출
60초 이내 제출 상한 5회
6시간 이내 10회 제출 제한
[재인쇄 시 주의 사항 : 단순 방지 Pu Cui Xiaoyan에 의한 다수의 악성 제출 공격|
위의 내용은 공격 측면을 포함하여 시스템에 대한 다중 악성 제출 공격에 대한 간단한 예방 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

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

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

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

1. 블랙/화이트 목록 IP 제한 액세스 구성 nginx 블랙 목록과 화이트 목록을 구성하는 방법에는 여러 가지가 있습니다. 다음은 일반적으로 사용되는 두 가지 방법입니다. 1. 첫 번째 방법: 허용, 거부 및 허용 명령은 ngx_http_access_module에 속합니다. nginx는 기본적으로 이 모듈을 로드하므로 직접 사용할 수 있습니다. 이 방법은 가장 간단하고 직접적입니다. 설정은 방화벽 iptable과 유사합니다. 사용 방법: 구성 파일에 직접 추가: #Whitelist 설정, 이어서 허용 가능 IPlocation/{allow123.13.123.12;allow23.53.32.1/100;denyall;}# 블랙리스트 설정,

1. 디렉터리 화이트리스트 설정: 지정된 요청 경로에 제한이 없습니다. api 디렉터리에 대한 요청 경로에 제한이 없으면 server{location/app{proxy_passhttp://192.168.1.111로 작성할 수 있습니다. 8095/app ;limit_connconn20;limit_rate500k;limit_reqzone=fooburst=5nodelay;}location/app/api{proxy_passhttp://192.168.1.111:8095/app/api}}#왜냐하면 nginx는 정확한 매칭에 우선순위를 두기 때문입니다

세션 실패는 일반적으로 세션 수명 만료 또는 서버 종료로 인해 발생합니다. 해결 방법은 다음과 같습니다. 1. 세션 수명을 연장합니다. 3. 쿠키를 사용합니다. 4. 세션 관리 미들웨어를 사용합니다.

WeChat에서 IP 주소를 확인하는 방법: 1. 컴퓨터 버전의 WeChat에 로그인하고 화면 하단의 작업 표시줄을 마우스 오른쪽 버튼으로 클릭한 후 "작업 관리자"를 클릭합니다. 2. 작업 관리자가 나타나면 " 3. 작업 관리 브라우저의 "성능" 옵션을 입력하고 "리소스 모니터 열기"를 클릭합니다. 4. "네트워크"를 선택하고 "Wechat.exe" WeChat 프로세스를 확인합니다. 5. "를 클릭합니다. TCP 연결'을 통해 위챗 네트워크 IP 관련 상황을 모니터링할 수 있다. 메시지를 보내고 답장을 받으면 상대방의 IP 주소가 공개된다.

문제: 오늘 프로젝트에서 설정 시간 초과 문제가 발생했으며 SpringBoot2의 application.properties에 대한 변경 사항이 적용되지 않았습니다. 해결 방법: server.* 속성은 SpringBoot에서 사용하는 내장 컨테이너를 제어하는 데 사용됩니다. SpringBoot는 ServletWebServerFactory 인스턴스 중 하나를 사용하여 서블릿 컨테이너의 인스턴스를 생성합니다. 이러한 클래스는 server.* 속성을 사용하여 제어되는 서블릿 컨테이너(tomcat, jetty 등)를 구성합니다. 애플리케이션이 Tomcat 인스턴스에 war 파일로 배포되면 server.* 속성이 적용되지 않습니다. 적용되지 않습니다.

개념: uv(순방문자): 고유 방문자, 인터넷에 연결된 각각의 독립적인 컴퓨터(쿠키 기반)는 방문자로 간주되며, 하루(00:00-24:00) 동안 귀하의 웹사이트를 방문한 방문자 수입니다. 하루 동안 동일한 쿠키에 대한 방문은 pv(페이지뷰) 한 번만 계산됩니다. 즉, 방문수, 즉 페이지 조회수 또는 클릭수, 사용자의 각 웹사이트 방문은 한 번 기록됩니다. 사용자가 동일한 페이지를 여러 번 방문할 경우 총 방문 횟수가 계산됩니다. 독립 IP: 동일한 IP 주소가 00:00~24:00 내에 한 번만 계산됩니다. 웹사이트 최적화를 하는 친구들이 이를 가장 걱정합니다. 먼저 환경을 설명하겠습니다. 이것은 nginx 버전 1.7을 실행하고 백엔드 tomcat은 동적으로 실행됩니다.

PHPSession의 도메인 간 문제 해결 프런트엔드와 백엔드 분리 개발에서 도메인 간 요청이 표준이 되었습니다. 도메인 간 문제를 처리할 때 일반적으로 세션 사용 및 관리가 포함됩니다. 그러나 브라우저 원본 정책 제한으로 인해 기본적으로 도메인 간에 세션을 공유할 수 없습니다. 이 문제를 해결하려면 도메인 간 세션 공유를 달성하기 위한 몇 가지 기술과 방법을 사용해야 합니다. 1. 도메인 간 세션을 공유하기 위한 쿠키의 가장 일반적인 사용

IP 할당이 표시되지 않는 Wi-Fi에 대한 해결 방법: 1. 장치와 라우터를 다시 시작하고, 장치에서 Wi-Fi 연결을 끄고, 장치를 끄고, 라우터를 끄고, 몇 분간 기다린 다음 라우터를 다시 열어 Wi-Fi에 연결합니다. 2. 라우터 설정을 확인하고 DHCP 기능이 활성화되어 있는지 확인하십시오. 3. 네트워크 설정을 재설정하면 이 작업을 수행하기 전에 백업되었는지 확인하십시오. 라우터 펌웨어를 확인하고 라우터 관리 인터페이스에 로그인한 후 펌웨어 업데이트 옵션을 찾아 메시지를 따르세요.
