模擬乙個客戶端惡意請求伺服器,如果在1分鐘內請求了1000次,就將這個客戶端的ip給禁了!
我們在middleswares.py檔案下自定義乙個中介軟體:
#模存入使用者ip的訪問情況
history = {}
# 模擬存放被禁的ip名單資料表
black_list=
class throttle(middlewaremixin):
def process_request(self, request):
#拿到當前訪問的時間
now = datetime.datetime.now()
# 拿到訪問者的ip
ip = request.meta.get("remote_addr")
#判斷此ip有沒有被記錄在黑名單如,如果有不讓它繼續訪問
if ip in black_list:
return httpresponse('你的ip已經被禁了!')
# 判斷一下當前ip有沒有訪問的histroy,如果沒有就給它新增乙個記錄
if ip not in history:
history[ip] =
# 做訪問次數的邏輯判斷,在1分鐘內次數加1
if (now - history[ip]['last']) < datetime.timedelta(seconds=60):
history[ip]['times'] += 1
else:
# 超過一分鐘就清空之前的記錄,重新計算
history[ip]['times'] = 0
history[ip]['last'] = now
# 判斷如果它的在一分鐘之內,請求了1000次,將它的ip加入到黑名單內
if history[ip]['times'] > 1000:
return httpresponse('你的ip已經被禁了!')
將這個自定義的中介軟體配置上:
middleware = [
'django.middleware.security.securitymiddleware',
'django.contrib.sessions.middleware.sessionmiddleware',
'django.middleware.common.commonmiddleware',
'django.middleware.csrf.csrfviewmiddleware',
'django.contrib.auth.middleware.authenticationmiddleware',
'django.contrib.messages.middleware.messagemiddleware',
'django.middleware.clickjacking.xframeoptionsmiddleware',
'middleswares.throttle',
]
執行效果:
SSRF(服務端請求偽造)
ssrf server side request forgery 伺服器端請求偽造 是一種由攻擊者構造形成由服務端發起請求的乙個安全漏洞。一般情況下,ssrf攻擊的目標是從外網無法訪問的內部系統。正是因為它是由服務端發起的,所以它能夠請求到與它相連而與外網隔離的內部系統 作為web安全萌新,以上晦澀...
SSRF 服務端請求偽造
ssrf,server side request forgery,服務端請求偽造,是一種由攻擊者構造形成由伺服器端發起請求的乙個漏洞。一般情況下,ssrf 攻擊的目標是從外網無法訪問的內部系統。漏洞形成的原因大多是因為服務端提供了從其他伺服器應用獲取資料的功能且沒有對目標位址作過濾和限制。也就是當前...
SSRF 服務端請求偽造
ssrf,server side request forgery,服務端請求偽造,是一種由攻擊者構造形成由伺服器端發起請求的乙個漏洞。一般情況下,ssrf 攻擊的目標是從外網無法訪問的內部系統。漏洞形成的原因大多是因為服務端提供了從其他伺服器應用獲取資料的功能且沒有對目標位址作過濾和限制。攻擊者可以...