日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

2.SQL注入攻击

發布時間:2025/3/21 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2.SQL注入攻击 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要針對SQL注入的含義、以及如何進行SQL注入和如何預防SQL注入讓小伙伴有個了解。適用的人群主要是測試人員,了解如何進行SQL注入,可以幫助我們測試登錄、發布等模塊的SQL攻擊漏洞,至于如何預防SQL注入,按理說應該是開發該了解的事情~但是作為一個棒棒的測試,搞清楚原理是不是能讓我們更加透徹地理解bug的產生原因呢~好啦,話不多說,進入正題~

如何理解SQL注入(攻擊)?

SQL注入是一種將SQL代碼添加到輸入參數中,傳遞到服務器解析并執行的一種攻擊手法。

SQL注入攻擊是輸入參數未經過濾,然后直接拼接到SQL語句當中解析,執行達到預想之外的一種行為,稱之為SQL注入攻擊。

?

SQL注入是怎么產生的?

1)WEB開發人員無法保證所有的輸入都已經過濾

2)攻擊者利用發送給SQL服務器的輸入參數構造可執行的SQL代碼(可加入到get請求、post請求、http頭信息、cookie中)

3)數據庫未做相應的安全配置

?

如何進行SQL注入攻擊?

以php編程語言、mysql數據庫為例,介紹一下SQL注入攻擊的構造技巧、構造方法

1.數字注入

在瀏覽器地址欄輸入:learn.me/sql/article.php?id=1,這是一個get型接口,發送這個請求相當于調用一個查詢語句:

?

$sql = "SELECT * FROM article WHERE id =",$id

正常情況下,應該返回一個id=1的文章信息。那么,如果在瀏覽器地址欄輸入:learn.me/sql/article.php?id=-1 OR 1 =1,這就是一個SQL注入攻擊了,可能會返回所有文章的相關信息。為什么會這樣呢?

這是因為,id = -1永遠是false,1=1永遠是true,所有整個where語句永遠是ture,所以where條件相當于沒有加where條件,那么查詢的結果相當于整張表的內容

2.字符串注入

有這樣一個用戶登錄場景:登錄界面包括用戶名和密碼輸入框,以及提交按鈕。輸入用戶名和密碼,提交。

這是一個post請求,登錄時調用接口learn.me/sql/login.html,首先連接數據庫,然后后臺對post請求參數中攜帶的用戶名、密碼進行參數校驗,即sql的查詢過程。假設正確的用戶名和密碼為user和pwd123,輸入正確的用戶名和密碼、提交,相當于調用了以下的SQL語句:

?

SELECT * FROM user WHERE username = 'user' ADN password = 'pwd123'

?

由于用戶名和密碼都是字符串,SQL注入方法即把參數攜帶的數據變成mysql中注釋的字符串。mysql中有2種注釋的方法:

1)'#':'#'后所有的字符串都會被當成注釋來處理

用戶名輸入:user'#(單引號閉合user左邊的單引號),密碼隨意輸入,如:111,然后點擊提交按鈕。等價于SQL語句:

?

SELECT * FROM user WHERE username = 'user'#'ADN password = '111'

?

'#'后面都被注釋掉了,相當于:

?

SELECT * FROM user WHERE username = 'user'

?

2)'-- ' (--后面有個空格):'-- '后面的字符串都會被當成注釋來處理

用戶名輸入:user'-- (注意--后面有個空格,單引號閉合user左邊的單引號),密碼隨意輸入,如:111,然后點擊提交按鈕。等價于SQL語句:

?

SELECT * FROM user WHERE username = 'user'-- 'AND password = '111'

SELECT * FROM user WHERE username = 'user'-- 'AND password = '1111'

?

'-- '后面都被注釋掉了,相當于:

SELECT * FROM user WHERE username = 'user'

因此,以上兩種情況可能輸入一個錯誤的密碼或者不輸入密碼就可登錄用戶名為'user'的賬號,這是十分危險的事情。

?

如何預防SQL注入?

這是開發人員應該思考的問題,作為測試人員,了解如何預防SQL注入,可以在發現注入攻擊bug時,對bug產生原因進行定位。

1)嚴格檢查輸入變量的類型和格式

對于整數參數,加判斷條件:不能為空、參數類型必須為數字

對于字符串參數,可以使用正則表達式進行過濾:如:必須為[0-9a-zA-Z]范圍內的字符串

2)過濾和轉義特殊字符

在username這個變量前進行轉義,對'、"、\等特殊字符進行轉義,如:php中的addslashes()函數對username參數進行轉義

3)利用mysql的預編譯機制

把sql語句的模板(變量采用占位符進行占位)發送給mysql服務器,mysql服務器對sql語句的模板進行編譯,編譯之后根據語句的優化分析對相應的索引進行優化,在最終綁定參數時把相應的參數傳送給mysql服務器,直接進行執行,節省了sql查詢時間,以及mysql服務器的資源,達到一次編譯、多次執行的目的,除此之外,還可以防止SQL注入。具體是怎樣防止SQL注入的呢?實際上當將綁定的參數傳到mysql服務器,mysql服務器對參數進行編譯,即填充到相應的占位符的過程中,做了轉義操作。

總結

以上是生活随笔為你收集整理的2.SQL注入攻击的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色污网站 | 91成人一区 | 麻豆av导航 | 在线观看免费看片 | 国产做爰免费观看视频 | 欧美日韩国产电影 | 欧美日韩va| 18禁一区二区 | 日韩精品中文字幕在线播放 | 美国一级黄色大片 | 啪啪av| 女人扒开屁股让男人捅 | 亚洲女则毛耸耸bbw 边吃奶边添下面好爽 | 亚洲妇熟xx妇色黄蜜桃 | 涩涩av | 一级二级av | 丰满少妇久久久久久久 | 午夜精品毛片 | 亚洲色图15p | 91麻豆国产在线 | 麻豆视频在线看 | 在线视频久久 | 男女视频在线观看免费 | 91久久久久久久久久久久久 | av男女| 欧美日韩五月天 | 99久久精品一区二区成人 | 中国老太婆性做爰 | 欧美成一区二区三区 | 2020国产精品视频 | 免费国偷自产拍精品视频 | 在线免费观看中文字幕 | 狠狠干一区 | 亚洲久久一区二区 | 成人在线观看h | 国产精品一级 | 久久天天躁狠狠躁夜夜躁 | 午夜综合网 | 国产精品女同一区二区 | 久久久久久久久久久久久久久久久久久 | 成人免费在线视频观看 | 97在线观看免费视频 | 国产精品一区二区三区线羞羞网站 | www.爱色av.com | 好了av在线 | 成人18视频| 国产免费黄色片 | 国内偷拍一区二区 | 日本熟妇色xxxxx日本免费看 | 麻豆传媒网站入口 | 男人的天堂一区 | 国产一区导航 | 女人18毛片毛片毛片毛片区二 | 国产精品无码影院 | 熟女av一区二区 | 黄色小视屏 | 成人动漫在线观看视频 | 亚洲人在线观看视频 | 四虎影院新网址 | 91玉足脚交嫩脚丫在线播放 | 中文字幕11页中文字幕11页 | 久久精品性 | 久久老司机 | 精品少妇一区二区三区在线观看 | 91天天操 | 国产性―交―乱―色―情人 | 丰满人妻一区二区三区大胸 | 日韩午夜av | 日产毛片| 国产精品啪 | 天天干天天操心 | 中文在线中文资源 | 亚洲福利小视频 | 四虎精品一区 | 国产在线观看免费视频软件 | 黄色片视频免费 | 日韩女优在线 | 成人交性视频免费看 | 三上悠亚痴汉电车 | 日韩欧美福利 | 国产精品久久久久久久久 | 毛片天堂 | 日韩精品一线二线三线 | www狠狠干| 亚洲国产av一区二区三区 | 国产裸体网站 | 日韩在线播放视频 | 久久久国产高清 | 五月99久久婷婷国产综合亚洲 | av十大美巨乳| 亚洲天堂精品一区 | 久久精品www人人爽人人 | 亚洲精品综合在线 | 性视频欧美 | 国产www免费观看 | 嫩草网站在线观看 | 插插插日日日 | 少妇伦子伦精品无吗 | 成人免费在线看片 |