精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

在线不卡日本| 久久免费国产视频| 国产又黄又猛的视频| 国产在线观看a视频| 国产一本一道久久香蕉| 欧美黑人一级爽快片淫片高清| 亚洲av无码一区东京热久久| 极品在线视频| 久久精品亚洲麻豆av一区二区| 国产精品福利网站| 91视频综合网| 日韩免费成人| 欧美小视频在线观看| 亚洲国产欧美一区二区三区不卡| 国产女主播福利| 欧美丝袜激情| 日韩亚洲欧美一区| 男人天堂999| 天堂资源在线中文| 成人激情综合网站| 国产精品女视频| 久久久久久蜜桃| 国产99精品一区| 欧美一级夜夜爽| 无码精品a∨在线观看中文| 国产片在线观看| 成人午夜电影小说| 国产日韩中文在线| 欧美精品99久久久| 欧美亚洲高清| 精品处破学生在线二十三| 能在线观看的av网站| 影音先锋中文在线视频| 久久亚洲捆绑美女| 亚洲一区二区三| 一级片在线观看免费| 欧美激情综合| 中文字幕免费精品一区高清| 四虎永久免费观看| 亚洲国产91视频| 日韩欧美成人网| 国产尤物av一区二区三区| 国产无套粉嫩白浆在线2022年| 国产黄色精品网站| 国产精品午夜一区二区欲梦| 国产做受高潮漫动| 女人色偷偷aa久久天堂| 一区二区三区精品99久久| 中国极品少妇xxxx| 电影一区二区三区久久免费观看| 色狠狠综合天天综合综合| 美女黄色免费看| 97视频精彩视频在线观看| 成人app下载| 国产中文字幕日韩| 中文字字幕在线中文乱码| 亚洲欧洲一级| 久久久久久97| gv天堂gv无码男同在线观看| 色先锋久久影院av| 亚洲精品在线免费播放| 99中文字幕在线| 色狠狠一区二区三区| 欧美综合在线视频| 久久精品香蕉视频| 免费毛片在线看片免费丝瓜视频| 亚洲视频免费看| 秋霞久久久久久一区二区| 性插视频在线观看| 9l国产精品久久久久麻豆| 国产成人一区二区三区免费看| 精品人妻一区二区三区换脸明星 | 91精品小视频| 精品国产亚洲日本| 555夜色666亚洲国产免| 女人高潮一级片| 99精品女人在线观看免费视频| 欧美精品亚洲一区二区在线播放| 成人小视频在线看| 91看片一区| 欧美最猛性xxxxx直播| 日韩一区二区三区不卡视频| 99re久久| 日韩一区二区三区免费观看| 日韩精品xxx| 精品精品国产三级a∨在线| 日韩av在线不卡| 精品无码在线观看| 久久亚洲国产| 久久99国产综合精品女同| 久久精品亚洲无码| 亚洲高清激情| 欧美在线免费看| 精品一区二三区| 狠狠色狠狠色综合| 国产精品一区二区三区观看| 台湾av在线二三区观看| 国产女人18水真多18精品一级做 | 久久国产激情视频| 国产一区二区三区亚洲综合| 精品国产欧美一区二区| 一本加勒比北条麻妃| 日韩精品一区二区三区免费观看| 久久精品国产成人精品| 免费人成年激情视频在线观看| 99pao成人国产永久免费视频| 777国产偷窥盗摄精品视频| 免费视频网站在线观看入口| 国产成+人+日韩+欧美+亚洲| 日韩av在线电影观看| 污网站在线免费看| 欧美日韩国产bt| 强伦人妻一区二区三区| 好吊日精品视频| 成人国产精品色哟哟| 九九在线视频| 亚洲成人激情综合网| 97超碰人人看| 日韩欧美午夜| 国产成人综合精品| 欧美自拍偷拍第一页| 综合久久久久久久| 成人亚洲精品777777大片| 欧美日日夜夜| 国内外成人免费激情在线视频| 96日本xxxxxⅹxxx17| 久久久久国产精品麻豆| 欧美男女爱爱视频| 成人在线视频你懂的| 久久亚洲精品一区| 在线视频免费观看一区| 国产喂奶挤奶一区二区三区| 成人毛片视频网站| 韩国精品福利一区二区三区| 欧美国产高跟鞋裸体秀xxxhd| 国产孕妇孕交大片孕| 国产精品三级视频| 在线免费视频a| 欧美精品momsxxx| 欧美亚洲另类制服自拍| 香蕉视频国产在线| 欧美午夜精品在线| 亚洲黄色在线网站| 久久精品动漫| 日韩欧美视频一区二区| 日本综合视频| 日韩在线免费av| 在线观看免费观看在线| 亚洲欧洲另类国产综合| 波多野结衣网页| 欧美体内she精视频在线观看| 91丝袜脚交足在线播放| 污污视频在线| 亚洲精品suv精品一区二区| 日本a在线观看| 91视频免费看| 国产免费视频传媒| 99九九热只有国产精品| 97久久人人超碰caoprom欧美| 怡红院在线播放| 日韩精品中文字幕一区| 日韩精品在线免费看| 久久综合中文字幕| 超碰超碰在线观看| 91精品国产乱码久久久久久久| 国产又爽又黄的激情精品视频| 婷婷成人激情| 精品美女被调教视频大全网站| 日韩欧美视频在线免费观看| wwwwxxxxx欧美| 污版视频在线观看| 欧美在线国产| 久久免费99精品久久久久久| 三级成人黄色影院| 久久综合色88| 性xxxx视频| 欧美日韩精品专区| 国产一级特黄毛片| 国产女人18水真多18精品一级做| 中文字幕剧情在线观看| 99精品视频免费观看| 日本在线观看不卡| 日韩一二三区在线观看| 日本91av在线播放| 巨大荫蒂视频欧美另类大| 亚洲成人a级网| 中文字字幕在线观看| 亚洲国产精品欧美一二99| 四虎国产精品成人免费入口| 国产一区二区在线看| 91免费视频网站在线观看| 99成人超碰| 久久精品日韩精品| 精品视频一区二区三区在线观看 | 中文字幕av日韩精品| 国产人妖ts一区二区| 国产日韩欧美中文在线播放| 狼人综合视频| 不卡中文字幕av| 第九色区av在线| 亚洲精品一区二区精华| 一区二区三区www污污污网站| 性做久久久久久免费观看| 久久久精品少妇| 久久精品在线观看| 国产在线观看免费播放| 久久国产精品99久久久久久老狼| 91专区在线观看| 亚洲精品国产首次亮相| 日日骚一区二区网站| 欧美三级电影在线| 动漫精品视频| 国产午夜亚洲精品一级在线| 国产成人一区二区三区| 91福利区在线观看| 欧美成年人网站| 免费的黄网站在线观看| 亚洲视频在线观看视频| 人妻偷人精品一区二区三区| 欧美一区二区三区爱爱| 在线观看日批视频| 日本道免费精品一区二区三区| 日韩三级小视频| 亚洲一区二区视频在线观看| 北条麻妃在线观看视频| 国产欧美1区2区3区| 波多野结衣 在线| av毛片久久久久**hd| 中国特级黄色片| 国产黄色精品网站| 992kp免费看片| 美腿丝袜一区二区三区| 91在线视频观看免费| 蘑菇福利视频一区播放| 日本在线xxx| 亚洲大黄网站| 婷婷五月综合缴情在线视频| 影音国产精品| 东北少妇不带套对白| 激情婷婷欧美| 国产精品网站免费| 一本一本久久| 夫妻免费无码v看片| 亚洲一区图片| 91av在线免费播放| 日韩av中文字幕一区二区三区| 黄在线观看网站| 久久午夜激情| www.色就是色| 久久99热99| 亚洲成人av免费观看| 国产乱一区二区| 99riav国产精品视频| 成人97人人超碰人人99| 日本丰满少妇裸体自慰| 久久精品亚洲国产奇米99| 丁香激情五月少妇| 中文字幕亚洲一区二区va在线| 蜜桃视频最新网址| 亚洲精品美国一| 国产精品99精品无码视| 黑人欧美xxxx| 中文字幕人妻一区二区三区视频| 制服丝袜中文字幕一区| www日本高清视频| 日韩av一区在线| 91精彩视频在线观看| 欧美大尺度在线观看| 老色鬼在线视频| 国产精品爱啪在线线免费观看| 热久久久久久| 国产精品麻豆免费版| 亚洲免费福利一区| 亚洲欧美日韩另类精品一区二区三区 | 欧美视频在线第一页| 新狼窝色av性久久久久久| 污污动漫在线观看| 丁香网亚洲国际| 亚洲理论片在线观看| 亚洲美女视频在线| 国产精品人人人人| 欧美区在线观看| 四虎在线视频免费观看| 中文字幕亚洲二区| 激情影院在线| 国产97在线|日韩| 日本一区二区三区播放| 欧美精品一区二区三区在线看午夜 | 国产盗摄视频在线观看| 国产精品社区| 亚洲三级在线视频| 久久午夜国产精品| 日本一级特级毛片视频| 精品日韩中文字幕| 国产视频在线观看免费| 亚洲天堂av综合网| 菠萝蜜视频在线观看www入口| 国产精品福利观看| 日本久久成人网| 国产女主播av| 日本伊人精品一区二区三区观看方式 | 欧美bbbbbbbbbbbb精品| 51精品久久久久久久蜜臀| 污污视频在线观看网站| 久久亚洲精品成人| 色猫猫成人app| 久久综合九色综合久99| 欧美先锋影音| 亚洲黄色片免费看| 欧美激情一区在线| 在线视频一区二区三区四区| 精品人在线二区三区| 快射av在线播放一区| 国产成人精品一区二区在线| 高潮久久久久久久久久久久久久 | 日韩欧美国产小视频| 男人的天堂在线视频免费观看| 欧美在线观看网址综合| 成人线上播放| 精品丰满人妻无套内射| 国产成人在线色| 黄色一级片中国| 欧美日韩久久久| 999在线视频| 国产精品网站视频| 久久精品国产大片免费观看| 精品免费国产一区二区| 91亚洲精华国产精华精华液| 国产一级在线视频| 亚洲精品一区二区三区蜜桃下载 | 久久免费精品国产| 一区二区三区在线观看欧美| 国产乱码一区二区| 日韩网站免费观看高清| 国产成人77亚洲精品www| 日产精品一线二线三线芒果| 久久xxxx| 舐め犯し波多野结衣在线观看| 欧美日韩在线免费观看| 四虎在线免费看| 国产999在线| re久久精品视频| 国产喷水theporn| 国产精品高潮久久久久无| 一级特黄特色的免费大片视频| 俺去了亚洲欧美日韩| 成人豆花视频| 超薄肉色丝袜足j调教99| 国产91精品精华液一区二区三区 | 久久精品99久久| 久久福利精品| 美国黑人一级大黄| 欧美男女性生活在线直播观看| 日本韩国在线视频爽| 成人激情黄色网| 欧美性色综合| 国产偷人妻精品一区| 在线观看成人免费视频| 免费在线毛片网站| 国产成人精品日本亚洲11| 在线亚洲伦理| 日本少妇xxxxx| 6080午夜不卡| av中文字幕电影在线看| 欧美动漫一区二区| 久久精品国产秦先生| 高h视频免费观看| 日韩精品视频在线观看免费| 日本精品网站| 99精品视频网站| av色综合久久天堂av综合| 中国一级特黄视频| 欧美裸体男粗大视频在线观看| 欧美理伦片在线播放| 黑森林精品导航| 一区二区三区在线观看动漫| 天堂а在线中文在线无限看推荐| 国产精品福利久久久| 韩国亚洲精品| 久操视频在线观看免费| 欧美成人三级在线| 日韩另类视频| 欧美高清中文字幕| 欧美国产一区在线| 亚洲精品久久久久久久久久久久久久 | 国产精品自拍毛片| 亚洲午夜18毛片在线看| 精品国产欧美成人夜夜嗨| 欧美男人操女人视频| 伊人色在线视频| 日韩欧美成人区| 欧美大胆的人体xxxx| 日韩精品欧美在线| 国产suv精品一区二区6| 中文人妻熟女乱又乱精品| 欧美激情一区二区三区高清视频| 欧美一区二区三区高清视频| 乱码一区二区三区| 678五月天丁香亚洲综合网| 免费成人动漫|