時間戳防盜鏈
更新時間 2023-12-06 13:10:15
最近更新時間: 2023-12-06 13:10:15
分享文章
本文介紹如何使用邊緣函數部署時間戳防盜鏈。
通過時間戳進行請求防盜鏈。
示例代碼
/*
示例url://daliqc.cn/timestamp?time=1622531831755&token=abcabc
*/
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request){
//401表示鑒權不通過
let statuscode = 401
let result = 'TimeStamp verification failed!'
try {
if(verifyTimeStamp(request.url) == true){
statuscode = 200
result = "TimeStamp verification succeeded!"
// 返回請求內容
}
} catch (error) {
result = error
}
return new Response(result, { "status": statuscode })
}
function verifyTimeStamp(url){
//"url": "//daliqc.cn/timestamp?time=1622531831755&token=abcabc",
let currentTime = new Date().getTime()
let myURL = new URL(url)
let searchParams = new URLSearchParams(myURL.search)
let timeStamp = parseInt(searchParams.get('time'))
let token = searchParams.get('token')
// 校驗時間戳:如果時間戳距離當前時間沒有過期,則進行 token 檢查
if (currentTime - timeStamp < 60000) {
// 校驗token
return tokenCheck(token)
}
return false
}
function tokenCheck(token){
// 此處可替換為自定義的復雜加解密算法
return token == "abcabc"
}
示例預覽
訪問請求傳入未過期時間、鑒權token,鑒權通過。
