欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot實現(xiàn)增加黑名單和白名單功能

 更新時間:2024年05月08日 10:39:48   作者:nanshaws  
本文主要介紹了springboot實現(xiàn)增加黑名單和白名單功能,就是單純的實現(xiàn)filter,然后注冊到springboot里面,在filter里面進行黑白名單的篩選,感興趣的可以了解一下

題外話

關(guān)于黑名單和白名單功能,我覺得可以直接用linux服務(wù)器的iptables或nftables來實現(xiàn)黑名單和白名單功能。這兩個工具都是Linux系統(tǒng)上用于配置防火墻規(guī)則的命令行工具。

iptables:

描述: iptables 是一個用于配置IPv4數(shù)據(jù)包過濾規(guī)則的工具。它是Linux系統(tǒng)上最常用的防火墻工具之一。

命令示例:

  • 添加黑名單規(guī)則:sudo iptables -A INPUT -s <黑名單IP地址> -j DROP
  • 添加白名單規(guī)則:sudo iptables -A INPUT -s <白名單IP地址> -j ACCEPT

nftables:

描述: nftables 是一個用于配置網(wǎng)絡(luò)過濾和分類規(guī)則的框架,可以替代iptables。它支持IPv4和IPv6,并提供更靈活的語法。

命令示例:

  • 添加黑名單規(guī)則:sudo nft add rule ip filter input ip saddr <黑名單IP地址> drop
  • 添加白名單規(guī)則:sudo nft add rule ip filter input ip saddr <白名單IP地址> accept

在選擇使用哪個工具時,您可以根據(jù)您的偏好以及系統(tǒng)是否已經(jīng)采用nftables來進行選擇。新er版本的Linux系統(tǒng)通常更傾向于使用nftables。請注意,上述命令中的<黑名單IP地址><白名單IP地址>需要替換為實際的IP地址。

無論您選擇使用iptables還是nftables,都需要小心配置規(guī)則,以確保不會阻止您訪問服務(wù)器。在配置之前,請確保您了解防火墻規(guī)則的工作原理和影響。

或者像openai一樣使用cf防護也就是CloudFlare作為其服務(wù)的安全防護層。

這里就不講那么多題外話,開始我們的springboot實現(xiàn)黑名單和白名單功能

先講一下springboot實現(xiàn)黑白名單的原理,很簡單,就是單純的實現(xiàn)filter,然后注冊到springboot里面,在filter里面進行黑白名單的篩選

第一步:創(chuàng)建一個springboot項目

pom文件的依賴:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

注意:由于我使用的是springboot3,它內(nèi)置的tomcat是10及其以上的。所以引入的依賴是jakarta,可能你們版本比較低的,可以使用javax

第二步:創(chuàng)建一個過濾器類

package org.cyl.test.fliter;
import jakarta.servlet.*;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class BlackWhiteListFilter implements Filter {

    private List<String> blackList = Arrays.asList("blocked-ip1", "blocked-ip2");
    private List<String> whiteList = Arrays.asList("127.0.0.1", "0:0:0:0:0:0:0:1");

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        String clientIP = request.getRemoteAddr();

        // 檢查黑名單
        if (blackList.contains(clientIP)) {
            response.getWriter().write("Your IP is blacklisted.");
            return;
        }

        // 檢查白名單
        if (!whiteList.contains(clientIP)) {
            response.getWriter().write("Your IP is not whitelisted.");
            return;
        }

        chain.doFilter(request, response);
    }

    // 可以實現(xiàn) init 和 destroy 方法,根據(jù)需要進行處理
}

第三步:注冊config類:

package org.cyl.test.config;
import org.cyl.test.fliter.BlackWhiteListFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class WebConfig {

    @Bean
    public FilterRegistrationBean<BlackWhiteListFilter> myFilter() {
        FilterRegistrationBean<BlackWhiteListFilter> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setFilter(new BlackWhiteListFilter());
        registrationBean.addUrlPatterns("/*");
        return registrationBean;
    }
}

第四步:開始測試

在這里面編寫白名單和黑名單。由于每次請求都會經(jīng)過Filter,所以在這里面可以實現(xiàn)除了我設(shè)置的127.0.0.1和0:0:0:0:0:0:0:1之外,其他ip無法訪問的情況。

編寫controller類

package org.cyl.test.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/allowed-endpoint")
    public String sayHello(){
        return "Hello";
    }
}

訪問localhost:8080/allowed-endpoint

結(jié)果如下:

修改白名單

再次訪問:

很簡單就成功了。

到此這篇關(guān)于springboot實現(xiàn)增加黑名單和白名單功能的文章就介紹到這了,更多相關(guān)springboot 黑名單和白名單內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java解析xml之sax解析xml示例分享

    java解析xml之sax解析xml示例分享

    SAX基于事件的解析,解析器在一次讀取XML文件中根據(jù)讀取的數(shù)據(jù)產(chǎn)生相應(yīng)的事件,由應(yīng)用程序?qū)崿F(xiàn)相應(yīng)的事件處理邏輯,即它是一種“推”的解析方式;這種解析方法速度快、占用內(nèi)存少,但是它需要應(yīng)用程序自己處理解析器的狀態(tài),實現(xiàn)起來會比較麻煩
    2014-01-01
  • SpringBoot中攔截器和動態(tài)代理的區(qū)別詳解

    SpringBoot中攔截器和動態(tài)代理的區(qū)別詳解

    在?Spring?Boot?中,攔截器和動態(tài)代理都是用來實現(xiàn)功能增強的,所以在很多時候,有人會認(rèn)為攔截器的底層是通過動態(tài)代理實現(xiàn)的,所以本文就來盤點一下他們兩的區(qū)別,以及攔截器的底層實現(xiàn)吧
    2023-09-09
  • Java中的setting和getting使用方法

    Java中的setting和getting使用方法

    為了保障數(shù)據(jù)的安全性,通常將數(shù)據(jù)成員定義為private(封裝或私有化),這樣外部代碼就無法直接訪問這些數(shù)據(jù),只能通過類提供的公共方法來進行訪問,這種方法主要包括setter和getter方法,以及構(gòu)造方法,setter方法用于給私有屬性賦值
    2024-09-09
  • Java JVM字節(jié)碼指令集總結(jié)整理與介紹

    Java JVM字節(jié)碼指令集總結(jié)整理與介紹

    本節(jié)將會著重介紹一下JVM中的指令集、Java是如何跨平臺的、JVM指令集參考手冊等內(nèi)容。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Java 根據(jù)貸款年限對應(yīng)利率計算功能實現(xiàn)解析

    Java 根據(jù)貸款年限對應(yīng)利率計算功能實現(xiàn)解析

    這篇文章主要介紹了Java 根據(jù)貸款年限對應(yīng)利率計算功能實現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Spring AOP在web應(yīng)用中的使用方法實例

    Spring AOP在web應(yīng)用中的使用方法實例

    這篇文章主要給大家介紹了關(guān)于Spring AOP在web應(yīng)用中的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring AOP具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • SpringBoot配置Profile實現(xiàn)多環(huán)境支持

    SpringBoot配置Profile實現(xiàn)多環(huán)境支持

    這篇文章主要介紹了SpringBoot配置Profile實現(xiàn)多環(huán)境支持操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 2020JDK1.8安裝教程詳解(一次就可安裝成功)

    2020JDK1.8安裝教程詳解(一次就可安裝成功)

    這篇文章主要介紹了2020JDK1.8安裝教程詳解(一次就可安裝成功),本文通過圖文并茂的形式分步驟給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-08-08
  • SpringMVC實現(xiàn)表單驗證功能詳解

    SpringMVC實現(xiàn)表單驗證功能詳解

    這篇文章主要為大家詳細(xì)介紹了SpringMVC 表單驗證的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Java實現(xiàn)高并發(fā)秒殺的幾種方式

    Java實現(xiàn)高并發(fā)秒殺的幾種方式

    高并發(fā)場景在現(xiàn)場的日常工作中很常見,本文主要介紹了Java實現(xiàn)高并發(fā)秒殺的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評論