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 有权限

目录
相关文章
|
6月前
|
Java 应用服务中间件 nginx
fastdfs实现防盗链功能
fastdfs实现防盗链功能
98 12
|
6月前
Koa图片上传
koa2一般处理 post 请求使用的是 koa-bodyparser,图片上传使用的是 koa-multer。 这两个在一起没什么问题,但是 koa-multer 和 koa-route(不是 koa-router) 存在不兼容的问题。 故,建议在koa中全局引入
89 0
|
3月前
|
JavaScript API
NodeJs——使用axios下载上传文件
NodeJs——使用axios下载上传文件
130 4
|
JavaScript 前端开发
nodejs接入七牛云并实现图片上传
nodejs接入七牛云并实现图片上传
|
缓存 应用服务中间件 PHP
Ngnix服务优化与防盗链(下)
Ngnix优化主要有两种,一种是配置上的优化,一种是内核上的优化。 本文将介绍Ngnix在配置方面的优化。 实验准备: 已安装好一台Nginx服务器,IP:172.16.10.101,域名:www.tt.com。
167 0
|
缓存 监控 网络协议
Ngnix服务优化与防盗链(上)
Ngnix优化主要有两种,一种是配置上的优化,一种是内核上的优化。 本文将介绍Ngnix在配置方面的优化。 实验准备: 已安装好一台Nginx服务器,IP:172.16.10.101,域名:www.tt.com。
146 0
|
缓存 安全 JavaScript
如何实现上传文件到 nodejs 和文件下载
最近拿 next.js 做个全栈项目,需要文件上传和下载,这里记录下实现方式,也写一下使用原生 node 代码如何实现。
|
应用服务中间件 Linux Apache
【防盗链】Nginx与Apache 防盗链教程
一、为什么要用防盗链? 什么是盗链? 一般情况下,别的网站如果直接链接虚拟主机中的网页,是可以提高网站的知名度与访问量,是受到ICP内容提供商或站长的欢迎的,但是,如果别的网站是偷偷直接链接您的网站中的音乐、电影、图片、zip文件及其它下载类资源,让网民免费看你的电影,不但不会提高您网站的知名度,还会让您的网站中产生大量没有意义的流量,如果一台服务器中存在大量这种盗链情况,服务器的速度就会下降。     从ICP内容提供商或站长的角度来看,辛辛苦苦做出来的内容,被别人偷偷使用,肯定心中不好受,显然,这种盗链是侵犯知识产权的行为。对于收费的下载类网站,这意味着有人可以不付费就享受您的服务!更严重
|
应用服务中间件 数据安全/隐私保护 nginx
Nginx 实现图片或文件的防盗链
一:一般的防盗链如下: location ~* \.(gif|jpg|png|swf|flv)$ {    valid_referers none blocked www.
1329 0