javascript - 如何防止人们利用我的 Rest Api
问题描述
假设我正在制作一个音乐应用程序,用户可以在其中上传音乐并收听它们。如果他们听音乐至少 30 秒,则播放计数器会增加。所以代码看起来像:
private plays_listener(){
let hasViewsUpdated = false;
let counter = 0;
this.audio.addEventListener("timeupdate", ()=>{
if(!hasViewsUpdated){
counter += 0.22;
if(counter > 30){
hasViewsUpdated = true;
updatePlays()
}
}
})
}
该updatePlays
功能将向我的服务器发送请求并更新播放。
async function updatePlays(){
await fetch("/api/track/update/plays", {
method: "POST",
headers: {
'Content-Type': 'application/json',
"CSRF-Token": <string>Cookies.get("XSRF-TOKEN"),
},
"body": JSON.stringify({song_id: "kjkfsd_aa"})
})
}
但是您仍然可以从开发者控制台向此 url 发送相同的发布请求,并且可以在不实际播放歌曲的情况下增加播放量。像这样:
所以 api 仍然会认为这是一个有效的请求,因为 csrf 令牌和会话令牌也将被发送。那么我该如何防止这种情况发生。
解决方案
推荐阅读
- amazon-web-services - 当我将 zip 文件上传到 elasticbeanstalk 时,到底发生了什么?
- altair - Altair/Vega-Lite 热图:过滤前 k
- r - 跨单行格式化gt表的方法?
- reactjs - Gitlab-ci 无法复制文件
- python - 注册用户无法使用凭据登录 django rest 框架
- swiftui - SwiftUI:以编程方式在 ScrollView 上设置滚动动画?
- vue.js - 在 vuex 商店中访问 app.config.globalProperties
- r - 零行程 R for 循环
- django - 如何在 Django REST Framework 中合并两个对象的数据
- facebook - Facebook Pixel 事件不显示在事件管理器中