机器多次恶意提交攻击简单防范
先说背景:机器不断的发送请求或者恶意提交,会给服务器造成很大压力;针对这种攻击
最优的策略是判断提交次数,产生动态验证码
,即判断ip规定时间内重复发送达到N次弹出验证码
。下面是小拽在实践过程中一个简单的识别ip,利用session记录和防御的过程。
识别和校验ip
过程如下;
识别ip
ip属于白名单直接通过[白名单策略:内网ip+指定ip表]
利用session存储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 </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>
防攻击策略
小拽采用的比较简单的策略,如上面代码,实际过程中可以结合业务需求。
1s内禁止重复提交
5s内提交上限3次
60s内提交上限5次
6小时内提交上限10次
【转载请注明:机器多次恶意提交攻击简单防范 | 靠谱崔小拽 】
以上就介绍了机器多次恶意提交攻击简单防范,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

1. Configuration de l'accès restreint à la liste noire/blanche nginx propose plusieurs façons de configurer les listes noire et blanche. Voici seulement deux méthodes couramment utilisées. 1. La première méthode : les instructions Allow, Denydeny et Allow appartiennent à ngx_http_access_module. Nginx charge ce module par défaut, il peut donc être utilisé directement. Cette méthode est la plus simple et la plus directe. Le paramètre est similaire au pare-feu iptable. Comment utiliser : Ajoutez directement au fichier de configuration : #Paramètres de la liste blanche, suivi de autoriser l'adresse IP accessible/{allow123.13.123.12;allow23.53.32.1/100;denyall;}#. Paramètres de la liste noire,

Comment vérifier l'adresse IP sur WeChat : 1. Connectez-vous à la version informatique de WeChat, cliquez avec le bouton droit sur la barre des tâches en bas de l'écran et cliquez sur « Gestionnaire des tâches » ; Détails » dans le coin inférieur gauche ; 3. Gestion des tâches Entrez l'option « Performances » du navigateur et cliquez sur « Ouvrir le moniteur de ressources » ; 4. Sélectionnez « Réseau » et vérifiez le processus WeChat « Wechat.exe » ; 5. Cliquez sur « Connexion TCP" ci-dessous pour surveiller la situation liée à l'IP du réseau WeChat. L'envoi d'un message et l'obtention d'une réponse révéleront l'adresse IP de l'autre personne.

L'échec de la session est généralement dû à l'expiration de la durée de vie de la session ou à l'arrêt du serveur. Les solutions : 1. Prolonger la durée de vie de la session ; 2. Utiliser le stockage persistant ; 3. Utiliser les cookies ; 4. Mettre à jour la session de manière asynchrone ; 5. Utiliser un middleware de gestion de session ;

1. Définissez la liste blanche du répertoire : il n'y a aucune restriction sur le chemin de requête spécifié. S'il n'y a aucune restriction sur le chemin de requête vers le répertoire de l'API, il peut être écrit sous la forme 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}}#Parce que nginx donnera la priorité à une correspondance précise

Solution au problème inter-domaines de PHPSession Dans le développement de la séparation front-end et back-end, les requêtes inter-domaines sont devenues la norme. Lorsque nous traitons de problèmes interdomaines, nous impliquons généralement l'utilisation et la gestion de sessions. Cependant, en raison des restrictions de la politique d'origine du navigateur, les sessions ne peuvent pas être partagées par défaut entre les domaines. Afin de résoudre ce problème, nous devons utiliser certaines techniques et méthodes pour réaliser le partage de sessions entre domaines. 1. L'utilisation la plus courante des cookies pour partager des sessions entre domaines

Les méthodes permettant d'interroger l'adresse IP de cette machine sont les suivantes : 1. Sous le système Windows, ouvrez le "Menu Démarrer" et recherchez "cmd" pour ouvrir l'invite de commande, saisissez "ipconfig", puis appuyez sur la touche Entrée pour trouver un ligne nommée "Adresse IPv4", le numéro à côté est l'adresse IP de la machine ; 2. Sous le système macOS, cliquez sur l'icône Apple dans le coin supérieur gauche de l'écran, sélectionnez "Préférences Système", recherchez le réseau actuellement connecté. dans l'option "Réseau", et cliquez sur le bouton "Avancé", recherchez l'IP de la machine dans l'onglet "TCP/IP", etc.

Solution au wifi n'affichant aucune allocation IP : 1. Redémarrez l'appareil et le routeur, désactivez la connexion Wi-Fi sur l'appareil, éteignez l'appareil, éteignez le routeur, attendez quelques minutes, puis rouvrez le routeur pour vous connecter au wifi. ; 2. Vérifiez les paramètres du routeur et redémarrez DHCP, assurez-vous que la fonction DHCP est activée ; 3. Réinitialisez les paramètres réseau, ce qui supprimera tous les réseaux WiFi et mots de passe enregistrés. Veuillez vous assurer qu'ils sont sauvegardés avant d'effectuer cette opération. le micrologiciel du routeur, connectez-vous à l'interface de gestion du routeur, recherchez les options de mise à jour du micrologiciel et suivez les invites.

Problème : Aujourd'hui, nous avons rencontré un problème de délai d'expiration dans notre projet et les modifications apportées au fichier application.properties de SpringBoot2 n'ont jamais pris effet. Solution : Les propriétés server.* sont utilisées pour contrôler le conteneur intégré utilisé par SpringBoot. SpringBoot créera une instance du conteneur de servlet en utilisant l'une des instances ServletWebServerFactory. Ces classes utilisent les propriétés server.* pour configurer le conteneur de servlets contrôlé (tomcat, jetty, etc.). Lorsque l'application est déployée en tant que fichier war sur une instance Tomcat, les propriétés server.* ne s'appliquent pas. Ils ne s'appliquent pas,
