Flask模擬實現(xiàn)CSRF攻擊的方法-創(chuàng)新互聯(lián)

CSRF

目前累計服務客戶成百上千家,積累了豐富的產(chǎn)品開發(fā)及服務經(jīng)驗。以網(wǎng)站設計水平和技術實力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁設計、網(wǎng)絡營銷、VI設計、網(wǎng)站改版、漏洞修補等服務。創(chuàng)新互聯(lián)始終以務實、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對領先技術的掌握、對創(chuàng)意設計的研究、對客戶形象的視覺傳遞、對應用系統(tǒng)的結合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。

CSRF全拼為Cross Site Request Forgery,譯為跨站請求偽造。

CSRF指攻擊者盜用了你的身份,以你的名義發(fā)送惡意請求。

包括:以你名義發(fā)送郵件,發(fā)消息,盜取你的賬號,甚至于購買商品,虛擬貨幣轉賬......

造成的問題:個人隱私泄露以及財產(chǎn)安全。

CSRF攻擊示意圖

客戶端訪問服務器時沒有同服務器做安全驗證

Flask模擬實現(xiàn)CSRF攻擊的方法

防止 CSRF

1.在客戶端向后端請求界面數(shù)據(jù)的時候,后端會往響應中的 cookie 中設置 csrf_token 的值

2.在 Form 表單中添加一個隱藏的的字段,值也是 csrf_token

3.在用戶點擊提交的時候,會帶上這兩個值向后臺發(fā)起請求

4.后端接受到請求,以會以下幾件事件: •從 cookie中取出 csrf_token

  • 從 表單數(shù)據(jù)中取出來隱藏的 csrf_token 的值
  • 進行對比

5.如果比較之后兩值一樣,那么代表是正常的請求,如果沒取到或者比較不一樣,代表不是正常的請求,不執(zhí)行下一步操作

代碼演示

未進行 csrf 校驗的 WebA

后端代碼實現(xiàn)

from flask import Flask, render_template, make_response

from flask import redirect

from flask import request

from flask import url_for

 

app = Flask(__name__)

 

 

@app.route('/', methods=["POST", "GET"])

def index():

  if request.method == "POST":

    # 取到表單中提交上來的參數(shù)

    username = request.form.get("username")

    password = request.form.get("password")

 

    if not all([username, password]):

      print('參數(shù)錯誤')

    else:

      print(username, password)

      if username == 'laowang' and password == '1234':

        # 狀態(tài)保持,設置用戶名到cookie中表示登錄成功

        response = redirect(url_for('transfer'))

        response.set_cookie('username', username)

        return response

      else:

        print('密碼錯誤')

 

  return render_template('temp_login.html')

 

 

@app.route('/transfer', methods=["POST", "GET"])

def transfer():

  # 從cookie中取到用戶名

  username = request.cookies.get('username', None)

  # 如果沒有取到,代表沒有登錄

  if not username:

    return redirect(url_for('index'))

 

  if request.method == "POST":

    to_account = request.form.get("to_account")

    money = request.form.get("money")

    print('假裝執(zhí)行轉操作,將當前登錄用戶的錢轉賬到指定賬戶')

    return '轉賬 %s 元到 %s 成功' % (money, to_account)

 

  # 渲染轉換頁面

  response = make_response(render_template('temp_transfer.html'))

  return response

 

if __name__ == '__main__':

  app.run(debug=True, port=9000) 

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站欄目:Flask模擬實現(xiàn)CSRF攻擊的方法-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://muchs.cn/article26/djiejg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、外貿(mào)網(wǎng)站建設、網(wǎng)站建設軟件開發(fā)、網(wǎng)站設計動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司