日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
多次提交禁止重復(fù)提交Redis篡改不可?。╮edis禁止同一個id)

多次提交禁止重復(fù)提交:Redis篡改不可取

成都網(wǎng)站建設(shè)公司更懂你!創(chuàng)新互聯(lián)只做搜索引擎喜歡的網(wǎng)站!成都網(wǎng)站制作前臺采用搜索引擎認(rèn)可的DIV+CSS架構(gòu),全站HTML靜態(tài),H5頁面制作+CSS3網(wǎng)站,提供:網(wǎng)站建設(shè),微信開發(fā),重慶小程序開發(fā),成都商城網(wǎng)站開發(fā)成都app開發(fā),域名注冊,服務(wù)器租售,網(wǎng)站代托管運營,微信公眾號代托管運營。

隨著互聯(lián)網(wǎng)時代的到來,Web 應(yīng)用程序的開發(fā)成為越來越普及的技能之一。在開發(fā)這些應(yīng)用程序時,有時需要通過表單提交數(shù)據(jù)。在使用表單提交數(shù)據(jù)時,重復(fù)提交是一個必須要謹(jǐn)慎處理的問題。

一些開發(fā)人員可能會使用 Redis 等緩存工具來解決這個問題。然而,當(dāng)涉及到多次提交禁止重復(fù)提交時,Redis 被篡改的風(fēng)險非常高。為了防止 Redis 篡改,開發(fā)人員需要采用其他解決方案。

多次提交禁止重復(fù)提交的原因

多次提交禁止重復(fù)提交的主要原因是避免重復(fù)提交。例如,考慮一個在線購物應(yīng)用程序。用戶點擊“提交”按鈕來確認(rèn)他們的訂單。如果用戶在等待頁面加入購物車后多次單擊“提交”按鈕,則可能會出現(xiàn)多個相同的訂單。這將導(dǎo)致用戶不必要的麻煩,并嚴(yán)重影響客戶體驗。在這種情況下,多次提交禁止重復(fù)提交是必要的。

解決方法

在處理多次提交禁止重復(fù)提交問題時,一些開發(fā)人員可能會考慮使用 Redis 等緩存工具來存儲數(shù)據(jù)。這種方法會在第一次提交后將數(shù)據(jù)存儲在緩存中。如果同一用戶再次提交相同的數(shù)據(jù),則該數(shù)據(jù)將被 Redis 拒絕。雖然這種方法可以防止重復(fù)提交,但存在重大隱患。Redis 篡改是一個相對容易的攻擊方法,因為 Redis 數(shù)據(jù)既可以在內(nèi)存中,也可以在磁盤上。讀者可以參考以下代碼:

String orderNo = getOrderNo();
if(redisService.set(orderNo,1,"nx","ex",60L)){//設(shè)置成功,標(biāo)識15s內(nèi)未重復(fù)提交
return ResponseEntity.ok(orderNo);//返回訂單號
}else{
return ResponseEntity.ok("重復(fù)提交");//重復(fù)提交
}

上述代碼操作流程為,使用 Redis 的 set 方法設(shè)置訂單號 orderNo ,每張訂單的標(biāo)識唯一,有效時間 60 秒。設(shè)置成功則表示未重復(fù)提交過,即用戶提交的訂單未存在于 Redis 中,否則表示重復(fù)提交。

如此一來,攻擊者可以輕松地修改 Redis 數(shù)據(jù)(這很容易在某些無屏幕服務(wù)器上實現(xiàn)),并導(dǎo)致應(yīng)用程序接受錯誤數(shù)據(jù)。破壞文件權(quán)限、修改配置文件、授予權(quán)限等攻擊行為都可以實現(xiàn) Redis 的篡改。

替代方案

由于 Redis 不是一個有效的解決方案,開發(fā)人員需要采用其他方法來解決多次提交禁止重復(fù)提交問題。以下是一些推薦的解決方案。

1.令牌桶限流器

令牌桶限流器是一種流控技術(shù)。它適用于控制訪問速度和強(qiáng)制實現(xiàn)最大并發(fā)數(shù)量。

public class RateLimiter {
private long lastTime = System.currentTimeMillis();
private long gapMs;
private long leftCount;

public RateLimiter(long gapMs, long countPerGap) {
this.gapMs = gapMs;
this.leftCount = countPerGap;
}
public synchronized boolean tryAcquire() {
long now = System.currentTimeMillis();
if (now - lastTime > gapMs) {
lastTime = now;
leftCount = gapMs;
}
if (leftCount > 0) {
// 獲得令牌
leftCount--;
return true;
} else {
// 沒有獲得令牌
return false;
}
}
}

上述代碼中的 RateLimiter 類采用令牌桶限流,以在特定時間段內(nèi)對請求進(jìn)行限制。在該實現(xiàn)中,每個用戶都只能在特定時間段內(nèi)提交一定數(shù)量的請求,從而防止重復(fù)提交。

2.加密常量隱藏字段

常量隱藏字段式一種 Web 安全技術(shù),可以將表單數(shù)據(jù)與預(yù)定義的常量配對。通過這種方法,您可以在 Web 應(yīng)用程序中進(jìn)行數(shù)據(jù)驗證,以確保表單數(shù)據(jù)的一致性。

例如:






上述代碼中,表單包含一個隱藏的值為 token 的字段。此token通常由應(yīng)用程序生成,用于防止重復(fù)提交。如果將此token與每個提交的表單數(shù)據(jù)一起使用,則您可以從攻擊者那里保護(hù)自己的 Web 應(yīng)用程序。

結(jié)論

在開發(fā) Web 應(yīng)用程序時,多次提交禁止重復(fù)提交是一個必須仔細(xì)處理的問題??上У氖?,Redis 等緩存工具不是一個可行的解決方案。替代方案可能包括令牌桶限流器和常量隱藏字段,以防止重復(fù)提交和保護(hù) Web 應(yīng)用程序的安全。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


新聞標(biāo)題:多次提交禁止重復(fù)提交Redis篡改不可?。╮edis禁止同一個id)
文章網(wǎng)址:http://www.5511xx.com/article/cojhdhd.html