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

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

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

    鐵手劍譜

    上善若水
    數(shù)據(jù)加載中……
    TOP 10 Web應(yīng)用安全之一:輸入校驗(yàn)

    TOP 10 Web應(yīng)用脆弱性之一:未經(jīng)驗(yàn)證的輸入


    描述

    Web 應(yīng)用使用HTTP 請(qǐng)求(也許還有文件,也是一種特殊請(qǐng)求) 來(lái)進(jìn)行輸入,并決定如何進(jìn)行響應(yīng)。攻擊者可以篡改HTTP 請(qǐng)求的任何部分,包括url,查詢(xún)字符串(querystring, headers, cookies, 表單字段(包括隱藏字段),試圖繞過(guò)服務(wù)器的安全機(jī)制。常見(jiàn)的通用輸入篡改攻擊包括:

    o       強(qiáng)迫瀏覽(forced browsing);

    o       命令注入(command insertion);

    o       交叉站點(diǎn)腳本(cross site scripting);

    o       緩沖區(qū)溢出(buffer overflows);

    o       格式字符串攻擊(format string attacks);

    o       SQL注入(SQL injection);

    o       有毒餅干(cookie poisoning);

    o       隱藏字段操作(hidden field manipulation),等等。

     

    某些站點(diǎn)試圖通過(guò)過(guò)濾惡意輸入來(lái)保護(hù)自己。但問(wèn)題是編碼信息的方式無(wú)窮無(wú)盡。這些編碼方式看起來(lái)并不是加密的,所以似乎也用不著解碼。但是,開(kāi)發(fā)人員仍然經(jīng)常忘記將所有的參數(shù)在使用之前解碼為最簡(jiǎn)單的形式。參數(shù)應(yīng)該在其被校驗(yàn)之前轉(zhuǎn)換為最簡(jiǎn)單的形式,否則,惡意輸入就可能掩飾自己從而流過(guò)過(guò)濾器。簡(jiǎn)化這些編碼的過(guò)程稱(chēng)為是“規(guī)格化(canonicalization)”。因?yàn)閹缀跛械?SPAN lang=EN-US>HTTP 輸入都可以編碼為多種格式,這種技術(shù)便可以打亂各種旨在利用和攻擊上述弱點(diǎn)的攻擊行為。這使得過(guò)濾非常困難。

    有非常之多的web 應(yīng)用僅使用客戶(hù)端校驗(yàn)來(lái)驗(yàn)證輸入??蛻?hù)端校驗(yàn)機(jī)制是非常容易繞過(guò)的,這樣就使得Web應(yīng)用幾乎對(duì)惡意參數(shù)的攻擊毫無(wú)保護(hù)。攻擊者可以使用攻擊甚至telnet來(lái)產(chǎn)生他們自己的HTTP 請(qǐng)求。他們才不關(guān)心開(kāi)發(fā)人員預(yù)定想要在客戶(hù)端發(fā)生的時(shí)候事情呢。注意,客戶(hù)端校驗(yàn)僅僅在提高性能和可用性方面有益,但是它毫無(wú)安全可言。因此,對(duì)于惡意參數(shù)攻擊,服務(wù)器端校驗(yàn)是必須的。

    這種攻擊的數(shù)量在不斷上升,因?yàn)橛写罅康闹С謪?shù)的“模糊化”(“fuzzing”)、腐朽(corruption)、以及野蠻強(qiáng)制增長(zhǎng)的工具出現(xiàn)。不應(yīng)該低估了這些使用非校驗(yàn)輸入進(jìn)行攻擊的影響。實(shí)際上如果開(kāi)發(fā)人員能夠在使用參數(shù)之前對(duì)其進(jìn)行驗(yàn)證,就可抵擋大部分的攻擊。因此,最好使用一個(gè)中心化的、強(qiáng)大的驗(yàn)證機(jī)制來(lái)對(duì)所有HTTP 請(qǐng)求的輸入都進(jìn)行驗(yàn)證,這樣利用此弱點(diǎn)進(jìn)行攻擊的數(shù)量就會(huì)大減。


    環(huán)境影響

    所有web servers, application servers, 以及應(yīng)用環(huán)境都容易受到這種參數(shù)篡改的攻擊。


    如何決定你的應(yīng)用是否脆弱

    一個(gè)Web應(yīng)用所用的未經(jīng)驗(yàn)證的HTTP請(qǐng)求的任何和部分都稱(chēng)為是“臟” 參數(shù)。找出臟參數(shù)的最簡(jiǎn)單的方式是進(jìn)行最詳細(xì)的代碼評(píng)審,找出所有從HTTP請(qǐng)求提取信息的方法調(diào)用。比如,在J2EE應(yīng)用中,這些包括HttpServletRequest 類(lèi)(以及其子類(lèi))中的方法。然后你就可以循著代碼查看參數(shù)變量是在哪里使用的。如果變量在使用之前未作驗(yàn)證,這可能就是一個(gè)潛在的問(wèn)題。在Perl中,你因該考慮使用 “taint” (-T) 選項(xiàng)。

    你也可以通過(guò)一些工具來(lái)找出臟參數(shù),比如OWASP WebScarab。它們可以查看和評(píng)審?fù)ㄟ^(guò)HTTP/HTTPS的所有數(shù)據(jù),并進(jìn)行分析。

    如何保護(hù)

    保護(hù)很簡(jiǎn)單,那就是確保任何參數(shù)在被使用之前都進(jìn)行了驗(yàn)證。最好的辦法是使用一個(gè)中心化的組件庫(kù),比如Java中的Jarkarta Commons Validator.每個(gè)參數(shù)都演進(jìn)行嚴(yán)格檢查。涉及到過(guò)濾臟數(shù)據(jù)的“負(fù)面”方法或者依賴(lài)于簽名的方法都不可能很有效率,并且難以維護(hù)。

    參數(shù)應(yīng)該進(jìn)行“正向”規(guī)格的檢查,正向規(guī)格( “positive” specification )的定義可包括:

    • 數(shù)據(jù)類(lèi)型(string, integer, real, )
    • 允許的字符集
    • 最大最小長(zhǎng)度
    • 是否允許null
    • 是否必需
    • 是否允許重復(fù)
    • 數(shù)值范圍
    • 特定的法定值 (枚舉)
    • 特定模式(正則表達(dá)式)

     * 本系列整理自 OWASP(Opensource Web Applicaiton Security Project )

    posted on 2005-09-12 11:52 鐵手 閱讀(1791) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): 企業(yè)架構(gòu) 、安全

    評(píng)論

    # air jordan 2011-06-10 17:31 air jordan

    I'm agree!
    主站蜘蛛池模板: 亚洲性久久久影院| 一区二区三区在线免费观看视频| 亚洲精品和日本精品| 国产成人精品免费视频大全麻豆| 一级毛片试看60分钟免费播放| 亚洲精品无码国产片| 亚洲小视频在线播放| 久久精品国产精品亚洲色婷婷| 亚洲乱码国产一区网址| 小小影视日本动漫观看免费| 免费AA片少妇人AA片直播 | 免费a级毛片网站| 免费无码精品黄AV电影| 久久国产色AV免费观看| 精品国产麻豆免费人成网站| 国产一区二区三区免费观在线| 成人免费视频一区二区| 亚洲AV成人无码网天堂| 亚洲精品无码久久久久A片苍井空| 亚洲人成电影青青在线播放| 久久精品蜜芽亚洲国产AV| 亚洲妇熟XXXX妇色黄| 亚洲精品中文字幕乱码三区| 国产亚洲精品拍拍拍拍拍| 亚洲视频人成在线播放| 亚洲AV之男人的天堂| 免费人成在线观看网站视频| 国产精品国产免费无码专区不卡| 国产精品深夜福利免费观看| 国产精品国产免费无码专区不卡 | 亚洲最新黄色网址| 亚洲日韩在线视频| 色在线亚洲视频www| 亚洲色精品三区二区一区| 亚洲一区二区三区国产精华液| 亚洲欧洲日韩国产一区二区三区| 中文日韩亚洲欧美制服| 亚洲欧美国产国产一区二区三区 | 国产精品久久久久影院免费| 国产网站免费观看| 91麻豆国产自产在线观看亚洲|