Nodejs 第三十章(防盗链)

简介: Nodejs 第三十章(防盗链)

防盗链(Hotlinking)是指在网页或其他网络资源中,通过直接链接到其他网站上的图片、视频或其他媒体文件,从而显示在自己的网页上。这种行为通常会给被链接的网站带来额外的带宽消耗和资源浪费,而且可能侵犯了原始网站的版权。

为了防止盗链,网站管理员可以采取一些措施:

  1. 通过HTTP引用检查:网站可以检查HTTP请求的来源,如果来源网址与合法的来源不匹配,就拒绝提供资源。这可以通过服务器配置文件或特定的脚本实现。
  2. 使用Referrer检查:网站可以检查HTTP请求中的Referrer字段,该字段指示了请求资源的来源页面。如果Referrer字段不符合预期,就拒绝提供资源。这种方法可以在服务器配置文件或脚本中实现。
  3. 使用访问控制列表(ACL):网站管理员可以配置服务器的访问控制列表,只允许特定的域名或IP地址访问资源,其他来源的请求将被拒绝。
  4. 使用防盗链插件或脚本:一些网站平台和内容管理系统提供了专门的插件或脚本来防止盗链。这些工具可以根据需要配置,阻止来自未经授权的网站的盗链请求。
  5. 使用水印技术:在图片或视频上添加水印可以帮助识别盗链行为,并提醒用户资源的来源。

编码

  • 第一步需要初始化静态资源目录 express.static
import express from 'express'
const app = express()
        //自定义前缀   初始化目录
app.use('/assets',express.static('static'))
app.listen(3000,()=>{
    console.log('listening on port 3000')
})

增加防盗链

防盗链一般主要就是验证host 或者 referer

import express from 'express';
const app = express();
const whitelist = ['localhost'];
// 防止热链中间件
const preventHotLinking = (req, res, next) => {
  const referer = req.get('referer'); // 获取请求头部中的 referer 字段
  if (referer) {
    const { hostname } = new URL(referer); // 从 referer 中解析主机名
    if (!whitelist.includes(hostname)) { // 检查主机名是否在白名单中
      res.status(403).send('Forbidden'); // 如果不在白名单中,返回 403 Forbidden
      return;
    }
  }
  next(); // 如果在白名单中,继续处理下一个中间件或路由
};
app.use(preventHotLinking); // 应用防止热链中间件
app.use('/assets', express.static('static')); // 处理静态资源请求
app.listen(3000, () => {
  console.log('Listening on port 3000'); // 启动服务器,监听端口3000
});

127.0.0.1 无权限

localhost 有权限

目录
相关文章
|
JSON 应用服务中间件 nginx
filebeat收集json格式的nginx程序日志(二)
filebeat收集json格式的nginx日志 1.为什么要收集json格式的日志类型 由于nginx普通日志收集过来的日志内容都是存在一个字段中的值,我们想单独对日志中的某一项进行查询统计,比如我只想查看某个IP请求了我那些页面,一共访问了多少次,在普通的日志中是无法过滤的,不是很满意
1345 0
filebeat收集json格式的nginx程序日志(二)
|
存储 消息中间件 运维
Kubernetes中部署ELK Stack日志收集平台(上)
Kubernetes中部署ELK Stack日志收集平台
Kubernetes中部署ELK Stack日志收集平台(上)
|
6月前
|
安全 Linux 测试技术
【实战指南】记一次定位fd泄漏问题
本文记录了一次文件描述符(fd)泄漏问题的排查过程。在项目压测中,进程因打开过多文件导致fd资源耗尽,最终无法创建新文件。通过分析错误码、查看/proc/pid/fd路径下的文件句柄信息,定位到临时文件未正确关闭的问题根源,并修复代码中遗漏的close调用。同时总结了Linux下进程资源限制的相关知识点,强调开发中应关注资源使用情况,避免类似问题发生。
297 53
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
88_多模态提示:图像与文本融合
在人工智能领域的快速发展中,多模态融合已成为突破单一模态限制、实现更全面智能理解的关键技术方向。人类理解世界的方式天然是多模态的——我们同时通过视觉、听觉、语言等多种感官获取信息并进行综合分析。例如,在餐厅点餐时,我们会同时处理菜单上的图片、服务员的介绍和菜品的文字描述,最终做出决策。这种自然的多模态信息整合能力,正是人工智能系统长期以来努力追求的目标。
|
运维 监控 安全
|
存储 弹性计算 缓存
阿里云服务器通用算力型实例规格性能、适用场景及价格参考
通用算力型云服务器阿里云推出的一款高性价比系列云服务器产品,也是目前阿里云官网活动中比较推荐用户购买的云服务器产品,目前通用算力型云服务器的活动价格略高于经济型e实例,但又比计算型c7、通用型g7等其他系列的云服务器价格要低一些,本文通过介绍通用算力型云服务器的性能、产品优势及适用场景和价格等情况,从而让大家了解通用算力型云服务器,对是否选择通用算力型云服务器做一个参考。
1452 1
阿里云服务器通用算力型实例规格性能、适用场景及价格参考
阿里云百炼大模型平台-自定义插件接口协议报错排查方案
阿里云百炼大模型平台-自定义插件接口协议报错排查方案
vue3 element-ui-plus Carousel 跑马灯 的使用 及 踩坑记录
本文介绍了在Vue 3中使用Element UI Plus的Carousel组件实现跑马灯效果的方法,并分享了在实现过程中遇到的常见问题和解决方案。
vue3 element-ui-plus Carousel 跑马灯 的使用 及 踩坑记录
|
JavaScript 前端开发 安全
如何在 Vue 页面中禁止选择、右键、复制及 F12 开发者工具
【10月更文挑战第3天】 在前端开发中,保护页面内容不被随意复制或查看是一个常见需求。本文介绍了如何在 Vue 应用中实现禁止文本选择、右键菜单、复制操作以及 F12 开发者工具的方法。通过结合 CSS 和 JavaScript 事件监听,我们可以增加用户查看和复制内容的难度,尽管无法完全阻止高级用户。适当的防护措施可以为内容提供一层额外的保护,帮助开发者提升页面安全性。
1797 0
|
数据采集 算法 物联网
【算法精讲系列】阿里云百炼SFT微调实践分享
本内容为您提供了百炼平台SFT微调的实践案例,帮助您方便并快速借助模型微调定制化您自己的专属模型。
3753 14

热门文章

最新文章