跳至主要内容

无服务器 自建短链服务 Url-Shorten-Worker API不公开服务

 源码GitHub: 

https://github.com/Crap996/Url.CF-Web

搭建方法:

https://blog.uncle.cloudns.org/2023/12/url-shorten-worker.html

API不公开服务的修改思路:

gh-pages分支下

index.html增加一个保存密钥的文本框, 在html文件中, 设置此文本框的值为__PASSWORD__

<input type="text" class="form-password" value="__PASSWORD__" readonly="true" id="passwordText">

main.js准备给POST的JSON里面添加这个文本框的值

body: JSON.stringify({ url: document.querySelector("#text").value, customShortURL: document.querySelector("#customShortURL").value, password: document.querySelector("#passwordText").value })

准备放到worker的脚本

在返回index.html时,获取index.html后,替换__PASSWORD__为密钥

let index= await fetch("https://crazypeace.github.io/Url-Shorten-Worker/"+config.theme+"/index.html")
index=await index.text()
index=index.replace(/__PASSWORD__/gm, password_value)
return new Response(index, {
  headers: {
    "content-type": "text/html;charset=UTF-8",
  },
})

获取POST过来的数据

let req_password=req["password"]

增加验证密钥的处理, 如果API POST过来的密钥不对, 报错

if (req_password != password_value) {
    return new Response(`{"status":500,"key":": Error: Invalid password."}`, {
      headers: response_header,
    })
}


整个系统运行逻辑为:

worker脚本当需要返回使用界面时, 读取index.html文件内容, 从KV中读取密钥, 将index.html中的"__PASSWORD__"替换为密钥, 再返回给用户的浏览器显示. 这样用户的页面上, 密钥文本框中的值就是密钥, 而不是"__PASSWORD__"

当用户点击按钮提交POST时, 从密钥文本框中读取密钥, 添加到POST的JSON数据中.

worker脚本当收到POST时, 验证提交的密钥是否符合KV中的密钥, 否则报错.

整个系统的安全性

整个系统的源码和逻辑都可以公开给攻击者。如果攻击者不能拿到Cloudflare的账户权限去读取KV的话,只能暴力破解密码。所以整个系统的安全性来自于密钥的长度。

 

评论

此博客中的热门博文

解决 ClouDNS 域名申请 CloudFlare SSL 证书问题

Text.  在上篇文章,我讲解过了如何在 ClouDNS 上申请自己的免费二级域名。但是如果使用这个域名并配合 CloudFlare 的 SSL 证书的话,可能会出现这个问题。在这篇文章中,我们就着手来解决这个问题 准备材料 ClouDNS 域名 CloudFlare 账号 部署步骤 打开 CF 的控制面板,然后进入到自己的域名。转到 SSL 中的 Edge Certificates 页面,找到类似 *.xx.cloudns.biz, xx.cloudns.biz 的选项,点击展开,然后复制里面的 TXT 记录和值备用 打开 ClouDNS 的域名 DNS 的 TXT 解析页面,然后点击 “Add new record” 按钮,创建 TXT 记录 将 CF 的解析值填写进来 等待大概 15-30 分钟,然后 Status 出现 “Active” 即可

解决 ClouDNS 域名无法在 CloudFlare DNS 解析的问题

Text. 在我们将 ClouDNS 域名 CloudFlare 之后,估计大家可能发现了一个问题:如果在 CloudFlare 的 DNS 解析这个域名,那这个域名有可能无法使用。这是因为不知道啥的原因,ClouDNS 的域名 DNS 还未完全转接给 CloudFlare 进行托管。这篇教程中,我就来和大家一起来解决 ClouDNS 域名无法在 CloudFlare DNS 解析的问题。 准备材料 ClouDNS 域名及账号 CloudFlare 账号 解决步骤 打开 CF 的 DNS 控制面板,解析自己的域名,并关闭小云朵 我们这时可以尝试 ping,可以发现是很大概率是 ping 不出来的 这时,我们回到 ClouDNS 的域名解析页面,添加一条和 CF DNS 相同样的记录 等待 ClouDNS 解析好之后,再次尝试 ping,如果 ping 出来的 ip 是解析好的 ip,即可代表成功。

节点客户端推荐:Karing,支持 Win / Mac / 安卓 / iOS,并附使用教程

  相信有些小白肯定和我几年前刚入坑一样热衷于使用 XX VPN 这种软件觉得一键上手挺容易,而不去使用机场、自建节点。但是这种 VPN 来说肯定比自建节点来讲是不安全的。那么我们有没有一款软件可以让小白去使用机场、自建节点呢?这篇文章介绍的 Karing,就是这种软件。下面我来和大家一起了解并使用这款软件 准备材料 Win / Mac / 安卓 / iOS 平台的设备 步骤 如为 Win / 安卓设备,打开他们的项目: https://github.com/KaringX/karing/releases ,然后根据自己的平台下载对应的安装包。如为 Mac / iOS 设备,直接在 App Store 搜索 Karing / Karing VPN 安装即可 打开 Karing,这里我们选择简体中文,点击“下一步” 分流规则这里按照默认即可,点击“下一步” 在这里我们可以通过订阅 / 节点链接、导入配置文件和扫码来添加节点 这里就以添加订阅为例,在配置链接处复制粘贴订阅链接,然后填写备注,最后点击右上角按钮添加即可 点击中间的开关按钮,启用代理。这里程序会挑选出延迟最低的节点供你链接 可以点击最下面的框,然后手动选择某一节点进行链接 可以在设置→我的配置处,管理自己的订阅配置 Text. Text.