新聞中心
??隨著技術(shù)的進(jìn)步,網(wǎng)站抗壓能力的提高,網(wǎng)絡(luò)攻擊事件也越來越頻繁。針對(duì)網(wǎng)絡(luò)攻擊,像防御超時(shí)攻擊、火攻擊等,可以使用防刷技術(shù)來有效抵御,尤其是開發(fā)了Redis緩存技術(shù),被許多網(wǎng)站認(rèn)可用于防御網(wǎng)絡(luò)攻擊。

??通用的一般的防刷系統(tǒng)是使用過去的一些字段記錄用戶的訪問,并且實(shí)質(zhì)上是限制用戶訪問的數(shù)據(jù)庫的讀取操作。而Redis dones 是用一個(gè)內(nèi)存數(shù)據(jù)庫來實(shí)現(xiàn)的,Redis內(nèi)存中的鍵和值分別表示IP地址和當(dāng)前時(shí)間戳,當(dāng)用戶請(qǐng)求發(fā)送到服務(wù)器端時(shí),服務(wù)器端就會(huì)去Redis檢查此IP地址是否存在,如存在,就比較當(dāng)前時(shí)間戳跟Redis中的時(shí)間戳,如果小于規(guī)定的閾值,那么說明為頻繁訪問,可以拒絕訪問,并返回錯(cuò)誤信息,如果大于規(guī)定的閾值,則允許訪問,此時(shí)服務(wù)器會(huì)重新獲取當(dāng)前時(shí)間戳,替換原來的時(shí)間戳,從而保持頻繁訪問的限制。代碼如下:
String ip ;
// 獲取用戶IP地址
ip=request.getRemoteAddr();
// 從Redis中獲取IP對(duì)應(yīng)的時(shí)間戳
String timestamp = jedis.hget("key",ip);
//有可能是第一次訪問,timestamp 為null
if(timestamp==null){
//首次訪問放行
else{
//當(dāng)前時(shí)間戳
long current_timestamp = System.currentTimeMillis();
//比較時(shí)間戳
if((current_timestamp - Long.valueOf(timestamp))
//訪問超過1分鐘放行
}else {
//訪問拒絕
}
//更新當(dāng)前時(shí)間戳
jedis. hset("key", ip, String.valueOf(current_timestamp));
}
??由此來看,Redis不僅比應(yīng)用數(shù)據(jù)庫的讀寫的方式更加便捷,而且Redis的查詢速度很快,能夠更快的完成讀取操作,從而幫助我們實(shí)現(xiàn)一定程度上的防刷技術(shù),從而達(dá)到有效抵御攻擊的效果。
創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)公司提供專業(yè)的建站服務(wù),為您量身定制,歡迎來電(028-86922220)為您打造專屬于企業(yè)本身的網(wǎng)絡(luò)品牌形象。
成都創(chuàng)新互聯(lián)品牌官網(wǎng)提供專業(yè)的網(wǎng)站建設(shè)、設(shè)計(jì)、制作等服務(wù),是一家以網(wǎng)站建設(shè)為主要業(yè)務(wù)的公司,在網(wǎng)站建設(shè)、設(shè)計(jì)和制作領(lǐng)域具有豐富的經(jīng)驗(yàn)。
本文題目:Redis在防刷中的應(yīng)用(redis防刷)
文章轉(zhuǎn)載:http://www.fisionsoft.com.cn/article/cdoepjs.html


咨詢
建站咨詢
