机器多次恶意提交攻击简单防范
先说背景:机器不断的发送请求或者恶意提交,会给服务器造成很大压力;针对这种攻击
最优的策略是判断提交次数,产生动态验证码
,即判断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教程有兴趣的朋友有所帮助。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





1. Senarai hitam/putih IP konfigurasi capaian terhad nginx Terdapat beberapa cara untuk mengkonfigurasi senarai hitam dan putih Di sini hanya dua kaedah yang biasa digunakan. 1. Kaedah pertama: membenarkan, menafikan dan membenarkan arahan milik ngx_http_access_module nginx memuatkan modul ini secara lalai, supaya ia boleh digunakan secara langsung. Kaedah ini adalah yang paling mudah dan paling langsung. Tetapan adalah serupa dengan firewall iptable Cara menggunakan: Tambahkan terus pada fail konfigurasi: #Whitelist settings, diikuti dengan allow is accessible IPlocation/{allow123.13.123.12;allow23.53.32.1/100;denyall;}# Tetapan senarai hitam,

1. Tetapkan senarai putih direktori: Tiada sekatan pada laluan permintaan yang ditentukan Jika tiada sekatan pada laluan permintaan ke direktori api, ia boleh ditulis sebagai pelayan{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}}#Kerana nginx akan memberi keutamaan kepada pemadanan yang tepat

Cara menyemak alamat IP pada WeChat: 1. Log masuk ke versi komputer WeChat, klik kanan bar tugas di bahagian bawah skrin, dan klik "Pengurus Tugas" 2. Apabila pengurus tugas muncul, klik "; Butiran" di sudut kiri bawah; 3. Pengurusan tugas Masukkan pilihan "Prestasi" pelayar dan klik "Open Resource Monitor"; 4. Pilih "Rangkaian" dan semak proses WeChat "Wechat.exe"; 5. Klik " Sambungan TCP" di bawah untuk memantau situasi berkaitan IP rangkaian WeChat. Menghantar mesej dan mendapatkan balasan akan mendedahkan alamat IP orang lain.

Kegagalan sesi biasanya disebabkan oleh tamat tempoh seumur hidup sesi atau penutupan pelayan. Penyelesaian: 1. Memanjangkan hayat sesi; 2. Gunakan storan berterusan;

Penyelesaian kepada masalah silang domain PHPSession Dalam pembangunan pemisahan front-end dan back-end, permintaan merentas domain telah menjadi kebiasaan. Apabila menangani isu merentas domain, kami biasanya melibatkan penggunaan dan pengurusan sesi. Walau bagaimanapun, disebabkan oleh sekatan dasar asal penyemak imbas, sesi tidak boleh dikongsi secara lalai merentas domain. Untuk menyelesaikan masalah ini, kita perlu menggunakan beberapa teknik dan kaedah untuk mencapai perkongsian sesi merentas domain. 1. Penggunaan kuki yang paling biasa untuk berkongsi sesi merentas domain

Konsep: uv (uniquevisitor): pelawat unik, setiap komputer Internet bebas (berdasarkan kuki) dianggap sebagai pelawat, dan bilangan pelawat yang melawat tapak web anda dalam masa sehari (00:00-24:00). Lawatan ke kuki yang sama dalam sehari hanya dikira sekali PV (pandangan halaman): lawatan, iaitu, paparan halaman atau klik, setiap lawatan ke tapak web oleh pengguna direkodkan sekali. Apabila pengguna melawat halaman yang sama beberapa kali, jumlah lawatan dikira IP Bebas: Alamat IP yang sama hanya dikira sekali dalam 00:00-24:00 Rakan yang melakukan pengoptimuman tapak web adalah yang paling mengambil berat tentang perkara ini saya mula-mula nyatakan persekitaran ini menjalankan nginx versi 1.7, tomcat bahagian belakang berjalan dinamik

Penyelesaian kepada wifi yang tidak menunjukkan peruntukan IP: 1. Mulakan semula peranti dan penghala, matikan sambungan Wi-Fi pada peranti, matikan peranti, matikan penghala, tunggu beberapa minit, kemudian buka semula penghala untuk menyambung ke wifi ; 2. Semak tetapan penghala dan mulakan semula DHCP, pastikan fungsi DHCP didayakan; 3. Tetapkan semula tetapan rangkaian, yang akan memadamkan semua rangkaian WiFi dan kata laluan yang disimpan perisian tegar penghala, log masuk ke antara muka pengurusan penghala, dan cari pilihan Kemas kini perisian tegar dan ikut gesaan.

Masalah: Hari ini, kami menghadapi masalah tamat masa tetapan dalam projek kami dan perubahan pada application.properties SpringBoot2 tidak pernah berkuat kuasa. Penyelesaian: Pelayan.* sifat digunakan untuk mengawal bekas terbenam yang digunakan oleh SpringBoot. SpringBoot akan mencipta contoh bekas servlet menggunakan salah satu contoh ServletWebServerFactory. Kelas ini menggunakan sifat pelayan.* untuk mengkonfigurasi bekas servlet terkawal (tomcat, jeti, dsb.). Apabila aplikasi digunakan sebagai fail perang kepada contoh Tomcat, pelayan.* sifat tidak digunakan. Mereka tidak memohon,
