精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 Springboot + Nginx 的 http_secure_link_module 實現圖片防盜鏈在 Vue 展示

開發 前端
本次方案通過引入 Nginx 的 http_secure_link_module 模塊實現了圖片防盜鏈功能,增強了圖片資源的安全性。在配置方面,我們使用 Yaml 文件來管理關鍵配置信息,包括圖片域名和 Nginx 的安全鏈接密鑰。

使用 Springboot + Nginx 的 http_secure_link_module 實現圖片防盜鏈并在 Vue 中展示功能

在當今互聯網環境中,圖片資源的安全性和有效管理至關重要。為了防止未經授權的訪問和濫用圖片資源,我們采用 Nginx 的 http_secure_link_module 模塊來實現圖片防盜鏈功能。這不僅能保護圖片的合法使用,還能有效控制資源的訪問權限,提升系統的安全性和穩定性。

在本次配置中,我們對 secure_link 模塊進行了定制化的設置,以滿足特定的業務需求。通過引入 $remote_addr 變量,我們能夠更精確地控制訪問來源,進一步增強了防盜鏈的效果。同時,對密鑰的配置和 token 、過期時間的生成算法進行優化,確保了只有在合法條件下才能訪問圖片資源。

Nginx 配置(nginx.conf)

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    keepalive_timeout  65;

    # 啟用 secure_link 模塊
    server {
        listen 80;
        server_name  your_domain;

        # 私有密鑰配置
        secure_link_secret your_private_secret;  # 此處的密鑰是用于生成和驗證 token 的關鍵元素,需要妥善保管和保密。它參與了 MD5 哈希計算,確保 token 的唯一性和安全性。

        location /images {
            secure_link $arg_token,$arg_expires,$remote_addr;
            secure_link_md5 "$secure_link_secret$uri$arg_expires$remote_addr";  # 這個表達式詳細說明了如何根據密鑰、圖片的 URI、過期時間和客戶端的 IP 地址生成 MD5 哈希值,用于驗證請求的合法性。

            if ($secure_link = "") {  # 如果 token 為空,直接拒絕訪問,返回 403 禁止訪問狀態碼。
                return 403;
            }

            if ($secure_link = "0") {  # 如果 token 驗證失敗,返回 410 資源已不存在的狀態碼。
                return 410;
            }

            root /path/to/images;  # 指定圖片的實際存儲路徑,確保 Nginx 能夠正確找到并提供服務。
        }
    }
}

Pom.xml 依賴配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>image-security</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
            <version>1.33</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Yaml 配置文件(application.yml)

image:
  domain: http://your_domain
nginx:
  secure-link-secret: your_secure_link_secret

ImageController 類(ImageController.java)

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Controller;
import org.yaml.snakeyaml.Yaml;

import java.io.InputStream;
import java.util.Map;

@Controller
public class ImageController {

    @Autowired
    private Environment environment;

    public String generateImageUrl(String imageName) {
        String imageDomain = environment.getProperty("image.domain");
        // 生成過期時間(假設 1 小時后過期)
        LocalDateTime expirationTime = LocalDateTime.now().plusHours(1);
        long expiresInSeconds = expirationTime.toEpochSecond(ZoneOffset.UTC);

        // 生成 token
        String token = generateToken(imageName, expiresInSeconds);

        return imageDomain + "/images/" + imageName + "?token=" + token + "&expires=" + expiresInSeconds;
    }

    private String generateToken(String uri, long expires) {
        String secret = environment.getProperty("nginx.secure-link-secret");
        String data = uri + expires + secret;
        try {
            MessageDigest digest = MessageDigest.getInstance("MD5");
            byte[] hash = digest.digest(data.getBytes());
            return Base64.getUrlEncoder().encodeToString(hash);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }
}

Spring Boot 控制器生成圖片列表

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

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/image")
public class ImageController {

    @GetMapping("/list")
    public List<String> getImageList() {
        List<String> imageUrls = new ArrayList<>();
        imageUrls.add(generateImageUrl("image1.jpg"));
        imageUrls.add(generateImageUrl("image2.jpg"));
        // 此處根據實際邏輯生成帶有 token 和 expires 參數的圖片鏈接
        return imageUrls;
    }
}

Vue 中展示圖片列表

<template>
  <div>
    <ul>
      <li v-for="imageUrl in imageList" :key="imageUrl">
        <img :src="imageUrl" />
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      imageList: []
    };
  },
  mounted() {
    // 發送請求獲取圖片列表
    this.$http.get('/image/list')
     .then(response => {
        const imageDomain = '${process.env.VUE_APP_IMAGE_DOMAIN}';
        this.imageList = response.data.map(url => imageDomain + url);
      })
     .catch(error => {
        console.error('獲取圖片列表失敗', error);
      });
  }
};
</script>

總結

本次方案通過引入 Nginx 的 http_secure_link_module 模塊實現了圖片防盜鏈功能,增強了圖片資源的安全性。在配置方面,我們使用 Yaml 文件來管理關鍵配置信息,包括圖片域名和 Nginx 的安全鏈接密鑰。通過在 ImageController 類中讀取這些配置,生成帶有令牌和過期時間的圖片 URL。在 Vue 端,我們根據配置的域名來完整地構建圖片的訪問地址。整個方案具有良好的靈活性和可擴展性,能夠根據實際業務需求進行調整和優化,有效保護圖片資源的合法訪問和使用。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2019-08-25 07:15:47

Nginx防盜鏈Linux

2017-03-22 14:41:43

2011-05-31 14:57:17

PHP盜鏈

2025-01-09 08:36:05

2020-06-15 09:41:47

網絡安全數據技術

2025-02-04 10:05:16

SpringForbiddenReferer?

2024-01-31 23:27:50

盜鏈Node.js

2020-09-01 16:56:58

華為云

2023-03-30 07:48:46

接口鑒權SpringBoot

2010-03-10 11:11:16

Python編程

2017-07-14 10:10:08

Vue.jsMixin

2024-02-19 16:25:29

前端Vue.jsJavaScript

2009-09-28 13:23:54

HTTP編程

2018-01-18 14:50:56

Nginx實現CDSW

2022-11-01 11:55:27

ReactVue3

2020-01-14 09:40:00

Nginx負載均衡正向代理

2009-05-14 18:33:33

intelNehalem服務器

2010-03-30 18:04:45

Nginx http服

2021-03-30 17:03:02

React開發部署Nginx

2025-02-24 12:00:00

開發SpringBootJava
點贊
收藏

51CTO技術棧公眾號

国产精品女视频| 一区二区三区精品99久久 | 美女羞羞视频在线观看| 精品一区精品二区高清| 欧美激情免费观看| 人人人妻人人澡人人爽欧美一区| 日韩黄色碟片| 精品人伦一区二区三区蜜桃网站| 日本一区二区三区免费观看| 99热这里只有精品5| 国产亚洲高清视频| 中文字幕精品视频| 人妻av一区二区| 免费一区二区三区四区| 午夜影视日本亚洲欧洲精品| 中文字幕精品一区日韩| 亚洲人妻一区二区| 国产精品一区二区无线| 国产精品 欧美在线| 九九热视频精品| 精品国产精品国产偷麻豆| 日韩欧美高清在线| 粉色视频免费看| 蜜臀久久精品| 亚洲综合色噜噜狠狠| 日韩免费av一区二区三区| 国产77777| 激情亚洲综合在线| 国产精品视频网址| 亚洲伊人成人网| 国内自拍一区| 久久久精品电影| 欧美激情视频二区| 欧美三级自拍| 亚洲第一精品电影| 999热精品视频| 日韩美女在线| 在线一区二区三区| 日本三级免费网站| 美女av在线免费看| 亚洲成人你懂的| 被灌满精子的波多野结衣| h网站久久久| 国产精品久久久久久一区二区三区 | 欧美成人免费播放| 亚洲少妇xxx| 日本久久黄色| 一区二区三区亚洲| 欧洲av一区二区三区| 在线日韩一区| 亚洲欧美成人网| 黄色aaa视频| 国产a久久精品一区二区三区| 日韩黄色在线免费观看| 日韩精品一区二区三区高清免费| 一区二区在线免费播放| 精品第一国产综合精品aⅴ| 久久久久久久久久久影视| 精品国产伦一区二区三区观看说明| 欧美日韩夫妻久久| 中文字幕 日韩 欧美| 国产精品视频一区视频二区| 欧美一区二区三区婷婷月色| 成年人性生活视频| 国产成人福利av| 精品日韩在线一区| 欧亚乱熟女一区二区在线| 欧美调教在线| 一区二区福利视频| 91高清免费观看| 好吊视频一区二区三区四区| 97国产在线视频| 色一情一乱一伦| 奇米四色…亚洲| 91久久国产综合久久91精品网站| 99在线精品视频免费观看20| 国产成+人+日韩+欧美+亚洲| 国偷自产av一区二区三区小尤奈| 日韩电影免费| 亚洲欧美自拍偷拍色图| 成人小视频在线观看免费| 成人观看网址| 欧洲av一区二区嗯嗯嗯啊| gai在线观看免费高清| 一区二区三区在线免费看| 亚洲精品一区二区三区不| 日本黄色激情视频| 国内自拍一区| 国产精品久久久久久久久久| 国产美女精品视频国产| 成人美女视频在线观看| 日韩电影免费观看高清完整| av免费网站在线观看| 欧美日韩激情美女| 天天操狠狠操夜夜操| 国产精品22p| 最好看的2019年中文视频| 九九久久免费视频| 日本伊人午夜精品| 亚洲一区美女视频在线观看免费| 午夜在线视频免费| 亚洲日本乱码在线观看| 国产二级片在线观看| 欧洲亚洲精品久久久久| 亚洲成人a**站| 亚洲天堂一级片| 久久福利毛片| 成人在线看片| 9色在线视频| 欧美日韩国产一区在线| 亚洲一区二区图片| 亚洲人成网亚洲欧洲无码| 操91在线视频| 最新中文字幕第一页| www.成人网.com| 欧美日韩一区二区三区电影| 成人欧美magnet| 精品剧情v国产在线观看在线| 亚洲精品午夜视频| 亚洲欧美日韩精品一区二区 | 国产成人ay| 国内久久久精品| 国产三级小视频| 亚洲国产精品精华液2区45| 一二三四视频社区在线| 欧美高清hd| 久久久www成人免费精品| 亚洲无码精品一区二区三区| www.久久久久久久久| 嫩草影院中文字幕| 国产精品一区二区美女视频免费看| 亚洲欧美中文日韩在线v日本| 国产精品19乱码一区二区三区| 国产在线精品一区二区| 亚洲一区二区三区精品在线观看| 亚洲欧美se| 日韩成人免费视频| 日韩成人在线免费视频| 成人在线视频首页| 日韩成人手机在线| 亚洲国产高清在线观看| 欧美成人在线免费| 国产欧美一级片| 亚洲摸摸操操av| 樱花草www在线| 99久久精品网站| 国产主播欧美精品| 精品孕妇一区二区三区| 欧美唯美清纯偷拍| 色撸撸在线视频| 久久99精品国产91久久来源| 亚洲一区二区三区免费观看| 色噜噜成人av在线| 久久久成人的性感天堂| 国产手机av在线| 一卡二卡三卡日韩欧美| 国产日韩视频一区| 一本综合精品| 欧美一区二区三区电影在线观看 | 在线亚洲+欧美+日本专区| 久久久久亚洲av无码专区桃色| 性色一区二区三区| 日韩欧美三级电影| 四虎永久精品在线| 粗暴蹂躏中文一区二区三区| 亚洲精品97久久中文字幕无码| 亚洲狠狠爱一区二区三区| 一本加勒比波多野结衣| 久久伊人亚洲| 亚洲一区二区精品在线| 日本一区二区三区播放| 欧美激情手机在线视频 | 欧美伦理片在线看| 视频在线不卡免费观看| 91成人免费观看| 川上优av中文字幕一区二区| 亚洲人午夜精品免费| 国产一区二区波多野结衣| 一区二区激情视频| 国精品无码人妻一区二区三区| 免费观看久久久4p| 成人区一区二区| 色棕色天天综合网| 亚洲伊人第一页| 正在播放日韩精品| 日韩小视频在线| 视频一区二区免费| 精品视频在线免费看| 国产一级二级三级视频| 久久这里都是精品| 天堂在线精品视频| 久久久久国产精品午夜一区| 男插女免费视频| 日韩电影不卡一区| 91久久久久久久| 女人高潮被爽到呻吟在线观看 | 欧美精品日韩在线| 国产 欧美在线| 国产一级片黄色| 欧美日韩精选| 亚洲高清视频在线观看| 超碰精品在线| 91精品一区二区| 成人美女大片| 欧美精品videossex性护士| 国内三级在线观看| 亚洲成人精品久久| 97视频免费在线| 日韩欧美中文在线| 国产一级片久久| 成人免费一区二区三区视频| 在哪里可以看毛片| 成人av电影在线网| 中文字幕第22页| 青青草成人在线观看| 男人日女人下面视频| 欧美激情视频一区二区三区在线播放 | 国产精品久久久久av| av资源新版天堂在线| 久久久久999| 秋霞午夜在线观看| 亚洲国产成人精品女人久久久| 在线视频你懂得| 色婷婷av一区二区三区之一色屋| 九热这里只有精品| 一区二区三区免费网站| 99久久精品久久亚洲精品| 久久九九国产精品| 性久久久久久久久久| 成人v精品蜜桃久久一区| 伊人精品视频在线观看| 黄色精品一二区| www.色欧美| 韩国成人精品a∨在线观看| 亚欧激情乱码久久久久久久久| 久久亚洲风情| 十八禁视频网站在线观看| 午夜一区二区三区不卡视频| 精品这里只有精品| 国产精品毛片一区二区三区| 精品少妇人妻av免费久久洗澡| 欧美午夜不卡| 久久亚洲a v| 伊人久久大香线蕉综合热线| 国产欧美日韩小视频| 在线高清一区| 男女激情无遮挡| 免费视频一区| 欧美性猛交久久久乱大交小说| 久久久久久一区二区| 免费激情视频在线观看| 日本女优在线视频一区二区| 亚洲第一狼人区| 久久成人免费电影| 亚洲图色中文字幕| 国产高清不卡一区二区| 国产精品一区二区在线免费观看| 国产精品资源站在线| 日本55丰满熟妇厨房伦| 成人视屏免费看| 少妇精品一区二区| 国产亚洲综合av| 日本欧美一区二区三区不卡视频| 中文字幕精品一区| 东方av正在进入| 亚洲高清三级视频| 午夜婷婷在线观看| 欧美日韩在线综合| 国产叼嘿视频在线观看| 亚洲高清av在线| 黄色影院在线播放| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 你懂的视频在线播放| 中文字幕精品一区二区精品| 中文在线免费| 欧美孕妇性xx| 亚洲精品毛片| 国产成人女人毛片视频在线| 美女毛片一区二区三区四区最新中文字幕亚洲| 日韩av一区二区三区美女毛片| 国产精品88久久久久久| 欧美视频免费看欧美视频| 视频一区欧美精品| 亚洲三级在线视频| 91亚洲精华国产精华精华液| 成人欧美一区二区三区黑人一| 一个色在线综合| 波多野结衣视频在线观看| 欧美一级日韩免费不卡| 欧美精品a∨在线观看不卡 | 日韩精品大片| 欧美日韩国产亚洲一区| 国产a视频免费观看| 国产中文字幕一区| 右手影院亚洲欧美| 综合网在线视频| 东京热一区二区三区四区| 欧美一区二视频| 黄色软件在线| 久久久在线视频| 四虎影视精品永久在线观看| 免费精品视频一区| 狠久久av成人天堂| 最新国产黄色网址| 国产亚洲精品精华液| 精品无码av在线| 欧美精品日韩一本| 国模精品一区二区| 欧美亚洲在线观看| 一区二区三区亚洲变态调教大结局 | 欧美熟妇精品黑人巨大一二三区| 亚洲三级在线播放| 中文字幕乱伦视频| 日韩av最新在线| 青草在线视频| 成人免费网站在线| 菠萝蜜一区二区| 丰满人妻中伦妇伦精品app| 国产成人啪午夜精品网站男同| 麻豆视频免费在线播放| 色先锋资源久久综合| 头脑特工队2在线播放| 欧美激情一级精品国产| 亚洲三级在线| 亚洲国产一区二区精品视频| 免费精品视频| 欧美图片一区二区| 欧美日韩激情视频| 婷婷国产在线| 91产国在线观看动作片喷水| 波多野结衣在线一区二区| 成人在线观看www| 久久精品国产**网站演员| 久久婷婷五月综合| 一本色道久久综合亚洲aⅴ蜜桃| 天天操天天射天天舔| 久久免费国产视频| 国内毛片久久| 日本中文字幕网址| 99re热视频这里只精品| 男人的天堂一区| 日韩电影中文字幕在线| 丝袜诱惑一区二区| 麻豆蜜桃91| 日韩精品福利网| wwwww黄色| 欧美日本在线一区| 岛国成人毛片| 成人资源视频网站免费| 亚洲另类自拍| 人妻熟女aⅴ一区二区三区汇编| 欧美日韩性生活视频| 青青草超碰在线| 日韩av电影在线播放| 欧美日韩国产在线观看网站| 午夜免费看视频| 综合婷婷亚洲小说| 成人久久久精品国产乱码一区二区| 欧美多人爱爱视频网站| 精品成人自拍视频| 国产在线观看福利| 国产精品久久久爽爽爽麻豆色哟哟| 一区二区三区播放| 欧美黑人巨大精品一区二区| 国产欧美自拍一区| 成人观看免费完整观看| 欧美国产精品一区二区三区| 国产精品高潮呻吟av| 欧美激情视频一区二区三区不卡| 精品福利一区| 天天操天天爱天天爽| 亚洲视频一区在线观看| 亚洲va欧美va| 青青青国产精品一区二区| 日韩综合在线| 午夜福利三级理论电影| 色天天综合色天天久久| 国产理论在线观看| 精品无人乱码一区二区三区的优势 | 性欧美xxxx| 日韩精品看片| 69亚洲乱人伦| 欧美在线色视频| 欧美色图天堂| 日韩黄色影视| 懂色av一区二区三区免费观看 | 日本视频一区二区| 老女人性淫交视频| 精品一区二区三区四区在线| 日本国产一区| 俄罗斯av网站| 亚洲欧美成aⅴ人在线观看| 午夜视频在线免费播放| 91精品视频播放| 天堂va蜜桃一区二区三区漫画版| 日韩视频中文字幕在线观看| 精品一区二区三区四区在线| 日本精品国产| 亚洲国产精品三区| 午夜av区久久|