在客户端那边去做限制,在最后一个请求没响应回来之前不能发起另外的请求。
a、提交事件触发后, 禁用控件,不让客户提交
b、设置一变量作为标识,如果是0就接受提交,如果是1就不接受. 每次提交的时候设为1,服务端响应之后设为0
服务端,
1在数据库层面防止重复数据写入
2使用 RateLimit 定义规定时间内同一 *** 作不能超过几次,
3采用队列写入
4每次提交都需要申请一个 token ,每个 token 只能用一次
防止网页刷新导致数据重复提交,可以在表单中添加Token令牌机制,这即保证了安全性(防CSRF攻击),又能够验证重复提交,每次生成表单页面时,会生成一个Token,在每次提交数据时,都要求检查Token,通过token检验合法的请求,可以多去看看实战教程。你在提交数据的时候,可以先用下面的其中任何一个函数去清除一下JS,然后在提交://清除JS
function clearJS(formdata) {
if(formdata==null || formdata=='') {return ""}
var reg = new RegExp("<scrip.*?script>", "ig")
return formdata.replace(reg, ",")
}
//不清除JS,只是注释掉
function annotateHTML(formdata) {
if(formdata==null || formdata=='') {return ""}
var reg = new RegExp("<", "ig")
var reg2 = new RegExp(">", "ig")
return formdata.replace(reg, ">").replace(reg2, "<")
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)