惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
aimingoo的专栏
aimingoo的专栏
Martin Fowler
Martin Fowler
C
Check Point Blog
G
Google Developers Blog
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
MongoDB | Blog
MongoDB | Blog
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
D
Docker
Hugging Face - Blog
Hugging Face - Blog
The GitHub Blog
The GitHub Blog
博客园 - 三生石上(FineUI控件)
A
About on SuperTechFans
Recent Announcements
Recent Announcements
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
Stack Overflow Blog
Stack Overflow Blog
Vercel News
Vercel News

微风静语

用 codebase-memory-mcp 给 AI 编程加一层“代码记忆” EchoCraft - 专为独立开发者和小型团队打造的产品官网主题 Halo 站长必备:外链安全与流量分析神器——“链接工具箱”重磅升级! Halo插件开发:java17旧项目迁移至java21项目记录 Halo插件|一个面向创作者的多功能媒体处理工具集 分布式事务详解:从入门到精通 让你的网站初步适配PWA Halo主题 - 微浸:以轻量构建美学,用细节定义体验 深入理解Python爬虫技术:原理、实现与实践 Halo-2.20 新特性:自定义登录页面模版 vue3 中父子组件数据传输踩坑 将你的服务运维面板从宝塔替换为1panel Python实战项目:外星人入侵(源码分享) theme-hao主题适配友链自助提交插件 plugin-artalk 插件保姆级使用教程 plugin-blog-hao 插件部分功能演示 halo 插件开发踩坑记录(一) Thymeleaf 模版引擎语法浅记 信息洪流中的自我救赎 mac 系统里如何管理多个jdk版本 memso API 不完全指南 基础语法:从CPU角度看变量、数组、类型、运算、跳转、函数等语法 halo-theme-hao主题:artalk评论区美化 衡量个人成长 halo-theme-hao 主题魔改教程 分享一个魔改的 Artalk 评论系统邮件模版 halo-theme-hao 主题标签记录 Mac 软件推荐:使用 Mac 一年半来,我一直在用的软件! TypeScript教程---面向对象编程 软件版本命名规范
开发一个 Halo2.0 的安全条跳转中台插件!
webjing · 2024-04-07 · via 微风静语

改文章的部分使用说明可能已过时,请参考详细文档

一、为什么要开发这个插件?

前段时间,读了一篇博客,有位博主提及自己的博客内有一些恶意链接或者链接被人劫持,自己未能及时发现并从博客上清理掉而导致博客被搜索引擎拉入黑名单中。面对这种情况,有时候就算及时处理了,也可能在外链的权重上或多或少受到波及。

如果加了安全跳转中台后,这样就可以让自己的主域名成功与外链间接通过中台串联,而不是直接关系。这样就会避免自己的博客被搜索引擎拉黑或导致拉黑的机率提高。由于网络安全的问题这些年越来越被关注,好多大型平台例如微博,微信,qq,网易等,都在这几年为自家的网络产品添加了一个安全跳转的中台页面。

我也想好好把这个博客站经营下去,不想被一些恶意链接导致站点被拉黑,因此也比较担心自己的站点也会出现此类问题,于是便想开发一款插件来避免此类情况发生!

二、插件是如何避免网站被拉黑的?

插件主要是通过 Halo 官方 提供的文章渲染扩展点,通过 JSoup解析到文章内容的所有 a 标签,之后修改 a 标签的 href 属性,而这个 href 属性是我们的安全跳转中台,关键的一点就是在 a标签的 rel属性 中加入 noopener external nofollow noreferrer 这个值。超链接a标签的 rel="noopener noreferrer"属性是一种新特性,它能让网站更安全,超链接添加rel="noopener noreferrer"来防止钓鱼网站,因为它获取的window.opener的值为null。在新打开的页面中,通过window.opener可以获取到源页面的部分控制权,即使新打开的页面是跨域也可以获取部分控制权。当a标签中加入了rel="noopener noreferrer"属性,window.opener 会为null。

超链接添加 rel=external nofollow 是为了告诉搜索引擎,不要将链接计入权重中,他是告诉一些非本站的链接、不想传递权重,例如网页里的统计代码、备案号链接、供用户查询链接等。这两个属性的大致可以解释为 “这个链接非本站链接,不要爬取也不要传递权重”

此外,还加入了一些其他安全检测,比如XSS攻击等。后续在插件的维护升级中,会加入更多的安全检测类型来保证自己博客站点的安全性。

下边是整体的实现效果:
halo-tiaozhuan.png

1、主要功能

  • 文章页链接加入安全跳转中台
  • 自定义白名单
  • 兼容链接管理插件的链接数据
  • 自定义安全中台页面内容

2、下载方式

  1. GitHub 下载

  2. 百度网盘下载地址

如果您在使用过程中遇到了问题,麻烦在本站留言区域留言给我!

3、插件使用

注意事项!!!

该插件在使用前,确保您已经安装了Halo 官方提供的链接管理插件!!!后续计划会慢慢去除掉这一项功能,根据用户配置来判断是否导入链接管理插件的数据。
Halo 版本要求 >= 2.12.0!!!

3.1 配置站点基本信息

lsd-settings1.png

  • 本站域名为必填项,格式为 https(http)://wenjing.xin ,注意不能带 “/”
  • 标题为必填项,他是浏览器顶部的title标题。
  • 博客名称和博客描述会出现在你的安全跳转中台页面,内容为必填项。
  • 地址栏图标和背景图片可以自行选择更换。

3.2 提示信息配置

lsd-settings2.png
提示信息是链接检测后的状态提示,请根据自己的喜好修改,可默认不变!

3.3 白名单配置

lsd-settings3.png

  • 排除的链接组别
    插件兼容了 链接管理插件的链接数据,如果你在文章中插入了这些链接,则会自动跳转不进行检测。如果有一些你不想跳转到链接,比如网站出现异常的链接,你可以把他们归类到一个组别中,插件会自动排除这些链接。组别的获取方式实在链接插件管理页面中,点击组别会在地址栏出现。
  • 不需要进行检测的白名单域名
    加入你经常使用的一些大型平台域名,比如GitHub,gitee,stack overflow等。注意只填写域名,并且每行只能填写一个域名!

至此,已经完成插件的所有配置了,如果在使用过程中遇到了什么问题,请先在本站留言给我,之后再发 issue.

3.4、自定义元数据

文章页面

下载验证设置。文章页面元数据设置键 downloadUrl,值是你文章内的下载链接,如果有多个下载链接,可食用 ,进行分隔,否则插件会统一识别为普通的地址!!!

aseting.png

自定义页面

如果有HTML块渲染的页面,请在页面元数据设置中添加 isExclude:true 来排除,否则会与HTML块渲染的内容冲突!!!

四、TODO

未来计划要做的事

  • 增加链接管理插件数据是否兼容的自定义配置
  • 增加随机背景图
  • 增加自定义页面添加链接安全跳转中台
  • 增加下载验证码功能
  • 增加主题内置页面的链接安全跳转中台
  • 优化不同编辑器文章内容的链接识别功能
  • 优化网站的安全检测功能,预防常见攻击
  • 增加常见评论区链接跳转中台

五、版本记录

插件的所有版本下载地址:链接在这里

V1.0.0

主要功能:

  • 文章页链接加入安全跳转中台
  • 自定义白名单
  • 兼容链接管理插件的链接数据
  • 自定义安全中台页面内容

V1.1.0

新增特性

  • 增加链接管理插件数据是否兼容的自定义配置
  • 增加随机背景图

其他

  • 优化白名单匹配机制
  • 修改部分字体样式

V1.2.0-beta1

新增特性

  • 增加自定义页面的链接跳转安全中台功能
  • 增加缓存机制,减少不必要的请求

如果有HTML块渲染的页面,请在页面元数据设置中添加 isExclude:true 来排除,否则会与HTML块渲染的内容冲突!!!

其他

  • 优化部分显示样式
  • 去掉底部的文字显示
  • 修复白名单为空行时的链接检测无效的问题
  • 优化文章链接的检测功能

其他

  • 修复本站域名无法自动加入白名单的问题
  • 修改部分样式

V1.2.0

新特性

  • 增加下载验证功能,需要在文章页面元数据设置键 downloadUrl,值是你文章内的下载链接,如果有多个下载链接,可使用 ,进行分隔,否则插件会统一识别为普通的地址!!!
  • 评论区链接识别(目前处于测试阶段,后续可根据自己需求设置),需在后台设置中注入文件 <script src="http(https)://yourDomain.com/plugins/link-security-detect/assets/static/commentLink.js"></script>
  • 新增授权机制

其他

  • 将网络请求资源改为本地资源
  • 对本地缓存设置过期时间

六、交流群

QQ群,加群后管理员自动审核。


最后,欢迎大家来使用我的插件并提出问题!