亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

SQL注入攻擊

#!/usr/bin/env Python
# -*- coding: utf-8 -*-
from flask import Flask,request
import pyMySQL

App = Flask(__name__)
"""
SQL語(yǔ)句注入
    在編寫(xiě)SQL語(yǔ)句時(shí),如果直接將用戶傳入的數(shù)據(jù)作為參數(shù)使用字符串拼接的方式插入到SQL查詢(xún)中,那么攻擊者可以通過(guò)注入其他語(yǔ)句來(lái)執(zhí)行攻擊操作,這些攻擊操作包括可以通過(guò)SQL語(yǔ)句做的任何事:獲取敏感數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)庫(kù)表……
"""
app.route('/')
def index():
    """
    示例
        假設(shè)我們的程序是一個(gè)學(xué)生信息查詢(xún)程序,其中的某個(gè)視圖函數(shù)接收用戶輸入的密碼,返回根據(jù)密碼查詢(xún)對(duì)應(yīng)的數(shù)據(jù)。我們的數(shù)據(jù)庫(kù)由一個(gè)db對(duì)象表示,SQL語(yǔ)句通過(guò) execute()方法執(zhí)行
        url=/?pwd='or 1=1--  ==變成==> sql = select * from students where pwd='' or 1=1--;'
        這時(shí)會(huì)把 students表中的所有記錄全部査詢(xún)并返回,也就意味著所有的記錄都被攻擊者竊取了。更可怕的是,如果攻擊者將 pwd參數(shù)的值設(shè)為"';drop table users; --"那么查詢(xún)語(yǔ)句就會(huì)變成
        sql = select * from students where pwd=''; drop table users; --;'
        執(zhí)行這個(gè)語(yǔ)句會(huì)把 students表中的所有記錄全部刪除掉。
    ps
        ; ==>用來(lái)結(jié)束一行語(yǔ)句
        -- ==>用來(lái)注釋后面的語(yǔ)句
    防范方法:
        1、orm可以一定程度上避免sql注入問(wèn)題
        2、驗(yàn)證輸入類(lèi)型==》一個(gè)視圖函數(shù)直接收整型id查詢(xún),可以在url規(guī)則中限制url變量為整型
        3、參數(shù)化查詢(xún),在構(gòu)建sql語(yǔ)句時(shí)避免使用拼接字符串或者字符串格式化方式來(lái)構(gòu)建sql,使用參數(shù)化查詢(xún)方法
            例:sqlite3庫(kù)==》db.execute('select * from students where pwd=?',pwd)
        4、轉(zhuǎn)義特殊字符,例如引號(hào),分號(hào),橫線  ==》 使用參數(shù)化查詢(xún)時(shí),各種接口庫(kù)會(huì)為我們做轉(zhuǎn)義工作
    """
    conn = pymysql.connect(**base_data_text)
    cursor = conn.cursor()
    pwd = request.args.get('pwd')
    cur = cursor.execute("select * from students where pwd='%s';" % pwd)
    ret = cur.fetchall()
    return ret

# 集體sql注入相關(guān)文檔: https://www.owasp.org/index.php/SQL_Injection

xss攻擊

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask, request
"""
xss攻擊【跨站腳本】
    XSS是注入攻擊的一種,攻擊者通過(guò)將代碼注入被攻擊者的網(wǎng)站中,用戶一且訪問(wèn)網(wǎng)頁(yè)便會(huì)執(zhí)行被注入的惡意腳本。XSS攻擊主要分為反射型XSS攻擊( Reflected XSS Attack)和存儲(chǔ)型XSS攻擊( Stored XSSAttack)
"""
app = Flask(__name__)


@app.route('/he')
def index():
    """
    示例
    1、反射型XSS又稱(chēng)為非持久型XSS
        反射型XSS又稱(chēng)為非持久型XSS(Non- Persistent XSS)。當(dāng)某個(gè)站點(diǎn)存在XSS漏洞時(shí),這種攻擊會(huì)通過(guò)URL注入攻擊腳本,只有當(dāng)用戶訪問(wèn)這個(gè)URL時(shí)才會(huì)執(zhí)行攻擊腳本
        以下視圖接收用戶通過(guò)査詢(xún)字符串傳入的數(shù)據(jù),未做任何處理就把它直接插入到返回的響應(yīng)主體中,返回給客戶端。如果某個(gè)用戶輸入了一段 JAVAscript代碼作為查詢(xún)參數(shù)name的值
        請(qǐng)求
            http://127.0.0.1:5000/he?name=<script>alert('lalalal);</script>
        響應(yīng)
            <h1>hello <script>alert('lalalal);</script></h1>
        前端展示
            會(huì)談出一個(gè)窗口內(nèi)容為lalalal
    產(chǎn)生的影響:
        能支持js彈窗,那么就可用js代碼來(lái)做任何事情,例如發(fā)起請(qǐng)求,重定向,發(fā)布廣告【ps:html css也可以影響頁(yè)面正常的輸出,篡改頁(yè)面樣式,插入圖片等】
    2、存儲(chǔ)型XSS也被稱(chēng)為持久型XSS( persistent XSS)
        存儲(chǔ)型XSS也被稱(chēng)為持久型XSS( persistent XSS),這種類(lèi)型的XSS攻擊更常見(jiàn),危害也更大。它和反射型XSS類(lèi)似,不過(guò)會(huì)把攻擊代碼儲(chǔ)存到數(shù)據(jù)庫(kù)中,任何用戶訪問(wèn)包含攻擊代碼的頁(yè)面都會(huì)被殃及。
        比如,某個(gè)網(wǎng)站通過(guò)表單接收用戶的留言,如果服務(wù)器接收數(shù)據(jù)后未經(jīng)處理就存儲(chǔ)到數(shù)據(jù)庫(kù)中,那么用戶可以在留言中插入任意JS代碼
        提交
            加入重定向代碼
            <script>window.location.href="http://www.baidu.com";</script>
        響應(yīng)
            任意用戶訪問(wèn)留言板,都會(huì)執(zhí)行js腳本
        解決辦法
            1》對(duì)html進(jìn)行轉(zhuǎn)義,確保用戶輸入的內(nèi)容僅做文本展示
            2》驗(yàn)證用戶輸入
    """
    name = request.args.get('name')
    return "<h1>hello {}</h1>".format(name)

if __name__ == '__main__':
    app.run()
    
# xss攻擊相關(guān)  https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

csrf攻擊

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask, request,abort
"""
CSRF攻擊【跨轉(zhuǎn)請(qǐng)求偽造】
    原理:
        某用戶登錄了A網(wǎng)站,認(rèn)證信息保存在cookie中。當(dāng)用戶訪問(wèn)攻擊者創(chuàng)建的B網(wǎng)站時(shí),攻擊者通過(guò)在B網(wǎng)站發(fā)送個(gè)偽造的請(qǐng)求提交到A網(wǎng)站服務(wù)器上,
        讓A網(wǎng)站服務(wù)器誤以為請(qǐng)求來(lái)自于自己的網(wǎng)站,于是執(zhí)行相應(yīng)的操作,該用戶的信息便遭到了篡改。總結(jié)起來(lái)就是,攻擊者利用用戶在瀏覽器中保存
        的認(rèn)證信息,向?qū)?yīng)的站點(diǎn)發(fā)送偽造請(qǐng)求。
"""
app = Flask(__name__)


@app.route('/he/delete')
def delete_index():
    """
    示例:
        假設(shè)我們網(wǎng)站是一個(gè)社交網(wǎng)站(127.0.0.1),簡(jiǎn)稱(chēng)網(wǎng)站A:攻擊者的網(wǎng)站可以是任意類(lèi)型的網(wǎng)站,簡(jiǎn)稱(chēng)網(wǎng)站B。在我們的網(wǎng)站中,刪除賬戶的操作通過(guò)GET請(qǐng)求執(zhí)行,由使用下面的 delete_index視圖處理
        當(dāng)用戶登錄后,只要訪問(wèn)127.0.0.1/he/delete就會(huì)刪除賬戶。那么在攻擊者的網(wǎng)站上,只需要?jiǎng)?chuàng)建一個(gè)顯示圖片的img標(biāo)簽,其中的sc屬性加入刪除賬戶的URL
            <img src="http://127.0.0.1/he/delete">
        當(dāng)用戶訪問(wèn)B網(wǎng)站時(shí),瀏覽器在解析網(wǎng)頁(yè)時(shí)會(huì)自動(dòng)向img標(biāo)簽的src屬性中的地址發(fā)起請(qǐng)求。此時(shí)你在A網(wǎng)站的登錄信息保存在 cookie中,因此,僅僅是訪問(wèn)B網(wǎng)站的頁(yè)面就會(huì)讓你的賬戶被刪除掉。
        雖然很少有網(wǎng)站使用get請(qǐng)求來(lái)處理包含數(shù)據(jù)更改的敏感操作,但是即使使用post請(qǐng)求,也可以?xún)?nèi)嵌隱藏表單使用js發(fā)起攻擊
    防范措施
        1》正確使用http方法
        2》csrf令牌校驗(yàn)
            flask-seasurf:https://github.com/maxcountryman/flask-seasurf
            flask-wtf:https://github.com/lepture/flask-wtf
    """
    if not current_user.authenticated:
        abort(401)
    current_user.delete()
    return 'Deleted'


if __name__ == '__main__':
    app.run()

#  csrf攻擊相關(guān)  https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)

更多攻擊及相關(guān)連接

  TOP25種攻擊方式 
https://cwe.mitre.org/top25/

  漏洞檢查工具webscarab 
https://github.com/OWASP/OWASP-WebScarab

結(jié)語(yǔ)

如果大家對(duì)web安全以及安全方面有什么好的方法或者看法,歡迎留言討論!

Web安全防范知識(shí)基礎(chǔ)講解

 

分享到:
標(biāo)簽:Web
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定