Rumah pembangunan bahagian belakang tutorial php 机器多次恶意提交攻击简单防范

机器多次恶意提交攻击简单防范

Jul 29, 2016 am 09:07 AM
amp interval ip session

先说背景:机器不断的发送请求或者恶意提交,会给服务器造成很大压力;针对这种攻击最优的策略是判断提交次数,产生动态验证码,即判断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>
Salin selepas log masuk

白名单策略

白名单策略采用:内网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>
Salin selepas log masuk

防攻击策略

小拽采用的比较简单的策略,如上面代码,实际过程中可以结合业务需求。

  • 1s内禁止重复提交

  • 5s内提交上限3次

  • 60s内提交上限5次

  • 6小时内提交上限10次

【转载请注明:机器多次恶意提交攻击简单防范 | 靠谱崔小拽 】

以上就介绍了机器多次恶意提交攻击简单防范,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah tapak web menetapkan sekatan IP hitam/senarai putih dan sekatan akses IP negara dan bandar melalui nginx? Bagaimanakah tapak web menetapkan sekatan IP hitam/senarai putih dan sekatan akses IP negara dan bandar melalui nginx? Jun 01, 2023 pm 05:27 PM

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,

Bagaimana untuk menetapkan senarai putih direktori dan senarai putih ip dalam nginx Bagaimana untuk menetapkan senarai putih direktori dan senarai putih ip dalam nginx May 18, 2023 pm 03:52 PM

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

Bagaimana untuk menyemak alamat IP pada WeChat Bagaimana untuk menyemak alamat IP pada WeChat May 31, 2023 am 09:16 AM

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.

Bagaimana untuk menyelesaikan kegagalan sesi Bagaimana untuk menyelesaikan kegagalan sesi Oct 18, 2023 pm 05:19 PM

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 merentas domain Sesi PHP Penyelesaian kepada masalah merentas domain Sesi PHP Oct 12, 2023 pm 03:00 PM

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

Bagaimanakah NGINX mengira PV, UV dan IP bebas tapak web? Bagaimanakah NGINX mengira PV, UV dan IP bebas tapak web? May 19, 2023 am 09:13 AM

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

Apakah yang perlu saya lakukan jika wifi saya tidak menunjukkan peruntukan IP? Apakah yang perlu saya lakukan jika wifi saya tidak menunjukkan peruntukan IP? Aug 30, 2023 am 11:58 AM

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.

Bagaimana untuk menyelesaikan masalah bahawa tetapan tamat masa sesi Springboot2 adalah tidak sah Bagaimana untuk menyelesaikan masalah bahawa tetapan tamat masa sesi Springboot2 adalah tidak sah May 22, 2023 pm 01:49 PM

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,

See all articles