• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Web的酒店點評系統(tǒng)安全測試研究

      2016-12-26 02:14:43乾,侯
      電子科技 2016年12期
      關(guān)鍵詞:腳本攻擊者漏洞

      蘇 乾,侯 俊

      (上海理工大學 光電信息及計算機工程學院,上海 200093)

      ?

      基于Web的酒店點評系統(tǒng)安全測試研究

      蘇 乾,侯 俊

      (上海理工大學 光電信息及計算機工程學院,上海 200093)

      為防范基于Web應用程序的漏洞攻擊,文中對一個Web頁面的酒店點評系統(tǒng)安全性能進行了測試。研究了該酒店點評系統(tǒng)在運行中各個環(huán)節(jié)上出現(xiàn)的Web應用程序漏洞。針對其中3種主要漏洞:SQL注入、跨站腳本攻擊及跨站請求偽造,根據(jù)其產(chǎn)生原理和攻擊過程,提出了過濾特殊字符和加密關(guān)鍵傳遞參數(shù)的防御方法,并給出相應的程序代碼。測試結(jié)果顯示,該酒店點評系統(tǒng)能有效地防范Web應用程序漏洞,提高了系統(tǒng)的安全性。

      Web酒店點評系統(tǒng);SQL注入;跨站腳本攻擊;跨站請求偽造

      漏洞是指信息系統(tǒng)中的軟件、硬件或通信協(xié)議中存在缺陷或不適當?shù)呐渲?,從而可使攻擊者在未授?quán)的情況下訪問或破壞系統(tǒng),導致信息系統(tǒng)面臨安全風險[1]。2014年,CNVD(國家信息安全漏洞共享平臺)收集新增漏洞9 163個,包括高危漏洞2 394個(占26.1%),中危漏洞6 032個(占65.8%),低危漏洞737個(占8.1%)。最新數(shù)據(jù)顯示,僅2015年11月,CNVD共協(xié)調(diào)處置了2 311起涉及我國政府部門以及銀行、民航等重要信息系統(tǒng)部門以及電信、傳媒、公共衛(wèi)生、敃育等相關(guān)行業(yè)的漏洞事件[2],可見對Web漏洞的研究和防范迫在眉睫。

      本文設(shè)計了一個用php實現(xiàn)的Web酒店用戶評論展示系統(tǒng),基本頁面展示近期用戶點評,允許用戶在游客狀態(tài)下填寫評論后發(fā)表,經(jīng)系統(tǒng)過濾保存評論內(nèi)容后在頁面展示,另外選擇管理員登陸,在驗證賬號密碼后可執(zhí)行對點評的刪除等操作,該系統(tǒng)功能實現(xiàn)流程如圖1所示。

      圖1 實現(xiàn)功能流程圖

      該系統(tǒng)的點評留言功能及登錄功能在互聯(lián)網(wǎng)上得到了廣泛應用,同時也存在多處高危漏洞,這些漏洞引起的安全隱患,會暴露用戶的詳細信息、允許惡意用戶執(zhí)行任意的數(shù)據(jù)庫查詢,甚至允許通過遠程命令行訪問服務(wù)器,從而造成對Web 應用程序的破壞或用戶隱私信息被竊取。本文分析漏洞出現(xiàn)的原理,對該酒店點評系統(tǒng)進行測試,改進代碼,以實現(xiàn)能對漏洞進行防范的功能。

      1 SQL注入攻擊及安全防范

      SQL注入(SQL Injection)攻擊是指惡意用戶輸入用來影響被執(zhí)行的SQL腳本[3]。由于Web端應用程序沒有對用戶輸入數(shù)據(jù)的合法性進行判斷,數(shù)據(jù)服務(wù)器運行惡意SQL命令后,通過和數(shù)據(jù)庫交互從而獲得私密信息,因此使數(shù)據(jù)庫信息遭到破壞。

      一種腳本注入式的攻擊方式是攻擊者在Web頁面的輸入?yún)^(qū)域,如表單的輸入?yún)^(qū)域或頁面請求查詢的字符串,輸入別有用心構(gòu)造的SQL語句插入特殊字符和指令,提交后的數(shù)據(jù)會被數(shù)據(jù)服務(wù)器誤認為是將要執(zhí)行的指令語句。

      在本酒店點評系統(tǒng)中,管理員需在Web應用程序的登錄驗證(login)頁面登陸后才能對用戶點評進行刪除等操作, 管理員需要輸入用戶名(username)以及對應的密碼(password)進行登錄操作,應用程序通過用戶提交的這兩個參數(shù)來進行操作,其原理是通過查找原本建立好userstable中的用戶名(username)和匹配密碼(password)的結(jié)果進行授權(quán)訪問,經(jīng)典的SQL指令形式為

      select*from userstable where username=’admin’ and password=’admin’

      若攻擊者給username賦值“abc’ or 1=1 -- ”,將其輸入提交給服務(wù)器后,服務(wù)器將執(zhí)行由其構(gòu)造出來的指令,SQL指令形式變成

      select*from userstable where username=’abc’ or 1=1 -- and password=’abc’

      該語句中執(zhí)行了兩個判斷,只要其中一個條件成立,則返回正確的授權(quán),同時由于語句中的“1=1”在邏輯上是永遠成立的,“--”表示后面所有的語句為注釋語句,因此這語句是恒成立的,導致應用程序不能正確驗證用戶身份,會錯誤授權(quán)攻擊者訪問。

      為了防范此類攻擊方式,系統(tǒng)采用對輸入用戶名信息進行過濾的方法,其詳細代碼如下

      Function Inputcheck()

      { if (instr(request(“$username”),”’”)>0 or instr(request(“$username”),”or”)>0) then

      reponse.write”

      response.end

      end if

      }

      此段功能函數(shù)對輸入的用戶名當中是否含有“’”和“or”字符進行識別,若存在非法字符則返回相關(guān)提示,以防止用戶惡意利用此漏洞獲得管理員登錄權(quán)限。

      另一種攻擊方式是基于當一個查詢指令被拒絕后,數(shù)據(jù)庫會返回包含有調(diào)試信息的錯誤消息,從而使攻擊者可通過返回的信息得到應用程序的數(shù)據(jù)庫以及漏洞參數(shù)。通常通過輸入不匹配的URL進行攻擊,如

      正確URL:http://www.hotel.com/manage/?id =2

      SQL注入:http://www.hotel.com/manage/?id =2’

      此時如果應用程序返回錯誤信息

      Select name FROM userstable WHERE id=2’

      則攻擊者可從返回的信息中得到:username、userstable、id字段名等私密信息從而進行更為精確的漏洞攻擊。為防范此類型的漏洞攻擊,需要對HTTP請求的參數(shù)進行檢測,本系統(tǒng)中添加了一段用于過濾請求參數(shù)的代碼,存儲于一個公共的php文件中便于其他文件的調(diào)用,其代碼如下

      foreach($_POST as $post_sql>=$post_post)

      { if(is_numeric($var_getvalues))

      $_POST[strtolower($post_sql)] = intval($post_post);

      else

      $_POST[strtolower($post_sql)] = addslashes($post_post);

      }

      foreach($_GET as $get_sql>=$get_get)

      { if(is_numeric($var_getvalues))

      $_GET[strtolower($get_sql)] = intval($get_get);

      else

      $_GET[strtolower($get_sql)] = addslashes($get_get);

      }?>

      當用戶向訪問的Web頁面提交參數(shù)時,通過上述代碼,利用intval()與addslashes()分別對提交的數(shù)據(jù)信息$_POST和$_GET中的整形參數(shù)及字符型參數(shù)進行轉(zhuǎn)換,能有效地防止SQL參數(shù)注入的攻擊。

      SQL注入漏洞對Web應用造成損壞巨大,同時也有相應的檢查措施,分為入侵前的檢測和入侵后的檢測。入侵前的檢測可通過手工方式,也可使用SQL注入軟件,主要目的是為了預防SQL注入攻擊。而對于入侵后的檢測,主要是查看審計日志,SQL注入漏洞攻擊成功后,會在IIS日志和數(shù)據(jù)庫中留下“痕跡”。比如在Web服務(wù)器中啟用日志記錄,則IIS日志會記錄下訪問者的IP地址等信息,SQL注入通常會大量訪問一個頁面,通過查看日志文件的大小以及日志內(nèi)容便可判斷是否曾經(jīng)發(fā)生SQL注入攻擊[4]。

      對SQL注入的防御措施,主要從檢驗提交信息的有效性入手,主要總結(jié)如下幾個方面:限制數(shù)據(jù)輸入及查詢字符的長度,檢測關(guān)鍵字和特殊字符;將用戶輸入的危險字符進行過濾或轉(zhuǎn)義;去除代碼中的敏感信息;對數(shù)據(jù)信息進行封裝和加密處理;指定錯誤返回頁面以及限制數(shù)據(jù)庫的訪問權(quán)限等。

      2 跨站腳本攻擊及安全防范

      HTML是Web頁面的一種基本描述語言,同時HTML中也可嵌入其他的腳本語言,比如“”。當瀏覽器遇到起始標簽[5]。若用戶填寫了相關(guān)的內(nèi)容提交,若沒有相應的過濾,就會導致跨站腳本XSS(Cross-Site Scripting Attack)漏洞的出現(xiàn)[6]。

      在本文的酒店點評系統(tǒng)中,發(fā)表點評功能對游客狀態(tài)的用戶開放,用戶在填寫點評后點擊發(fā)表,隨后將保存的點評展示在點評列表中,但若用戶惡意輸入一些腳本語言代碼,例如:,而系統(tǒng)沒有對點評內(nèi)容沒有過濾,點擊發(fā)表評論后,系統(tǒng)并沒有把用戶輸入的代碼顯示在點評列表上,而是已執(zhí)行Java腳本語句的方式彈出消息框提示“warning!”。

      [7],XSS的實現(xiàn)過程如圖2所示。

      圖2 XSS漏洞攻擊流程

      根據(jù)HTML頁面引用用戶輸入的形式,XSS攻擊大致分為3類:存儲型的XSS、反射型的XSS和基于DOM的XSS[8-9]。

      存儲型的XSS(stored XSS),最常檢測的到漏洞出處就是類似留言、評論這種Web頁面。攻擊者通常直接將腳本代碼輸入到被攻擊Web站點的表格中,當其他用戶來訪問這個頁面時,輸入的腳本并非以靜態(tài)數(shù)據(jù)顯示,而是作為指令代碼開始執(zhí)行。

      唐山市21個水功能區(qū)中10個水功能區(qū)設(shè)為禁止設(shè)置入河排污口水域:大黑汀水庫水源地保護區(qū);潵河河北承德、唐山保留區(qū);沙河河北秦皇島飲用水源區(qū);龍灣河河北唐山飲用水源區(qū);泉水河河北唐山飲用水源區(qū);陡河河北唐山飲用水源區(qū);還鄉(xiāng)河河北唐山飲用水源區(qū)1;引灤專線天津水源地保護區(qū)1;小青龍河北唐山農(nóng)業(yè)用水區(qū);還鄉(xiāng)河河北唐山飲用水源區(qū)2。

      反射型XSS(reflected XSS),就是將腳本文件嵌入到URL地址的CGI參數(shù)中,攻擊者將鏈接發(fā)送給潛在的受害者;當受害者點擊鏈接時,頁面被下載,但其中的內(nèi)容被嵌入在URL中的腳本修改了。在此過程中,只有用戶在點擊了被篡改過的鏈接時,頁面載入過程中才執(zhí)行完成。

      基于DOM 的XSS攻擊,其是通過修改Web頁面DOM節(jié)點數(shù)據(jù)信息而形成的漏洞攻擊。例如一段JavaScript代碼訪問一個URL請求參數(shù)并使用此信息添加到自己的頁面,但這個信息未使用HTML的實體編碼,就可能出現(xiàn)XSS漏洞。

      XSS攻擊所攻擊的主要目標并不是Web服務(wù)器本身,而是登錄網(wǎng)站的用戶,其一般不會奪取訪問Web服務(wù)器的管理權(quán)限,XSS攻擊的目的是:(1)劫持用戶的Web行為,監(jiān)視瀏覽歷史、表單輸入、發(fā)送接受的數(shù)據(jù),或?qū)⒛繕苏军c重新定向到釣魚網(wǎng)站;(2)竊取用戶Cookie,獲取用戶身份,從而獲得對網(wǎng)站的操作權(quán)限;(3)目前最多的XSS蠕蟲攻擊,可用來打廣告、刷流量、掛木馬、破環(huán)網(wǎng)站數(shù)據(jù)等[10]。

      因此,需要在發(fā)表點評的系統(tǒng)中加入能有效防御XSS漏洞的手段,本例采用str_replace()函數(shù)對頁面的輸入輸出內(nèi)容中的特殊字符進行編碼,代碼如下

      FUNCTION code_filter($cMyString)

      { $cMyString = trim($cMyString);

      $cMyString = str_replace(“"”,”””, $cMyString);

      $cMyString = str_replace (“@@is”,””,$ cMyString);

      $cMyString = str_replace (“@@is”,””,$ cMyString);

      $cMyString = str_replace (“@@is”,””,$ cMyString);

      ……

      $cMyString = nl2br($cMyString);

      Return $cMyString;

      }

      將輸入輸出內(nèi)容出的“””、 “&”等特殊字符以及其他腳本代碼進行變換編碼,防止了利用腳本語言進行的XSS漏洞攻擊。

      此外,安全措施還包括以下幾個方面:對于將保存的點評的ID等變量,需檢查變量初始化,明確變量類型;對于用戶提交評論的內(nèi)容,需添加格式、長度和范圍的驗證程序;添加用于過濾所有從動態(tài)頁面輸入特殊字符的IIS組件。

      3 跨站請求偽造及安全防范

      跨站請求偽造(Cross-Site Request Forgery,CSRF),是一種對網(wǎng)站的惡意利用,其是通過偽裝來自受信任用戶的請求來利用受信任的網(wǎng)站,CSRF攻擊往往不太流行和難以防范,所以被認為比XSS更具有危險性[11]。

      CSRF攻擊通過使應用程序相信此活動的請求來自應用程序的一個可信用戶[12],其一般過程如圖3所示。

      圖3 正常用戶訪問站點

      首先Web站點和瀏覽器之間建立了相互認證的會話,之后只要是通過這個瀏覽器的認證的會話所發(fā)送的請求,都被視作可信任的請求。此時,惡意站點偽造有效請求,發(fā)生一個CSRF攻擊[13],如圖4所示。

      圖4 遭遇CSRF漏洞攻擊

      發(fā)起攻擊的站點致使瀏覽器向Web站點發(fā)送一個請求,然而站點認為來自該瀏覽器的請求均是經(jīng)過認證的有效請求,所以執(zhí)行這個“可信認的請求”。CSRF攻擊發(fā)生的根本原因是Web站點所驗證的是瀏覽器而非用戶本身,通常引發(fā)改變用戶口令,轉(zhuǎn)移金融財產(chǎn)等重大危機。

      在本酒店點評系統(tǒng)中,用戶登錄管理員后會獲得刪除一些點評的權(quán)限,若管理員需要刪除其中一條的點評,只需提交鏈接

      http://www.hotel.com/manage/delete.php?id =1

      delete.php?id=2>

      那么在管理員重新登錄刷新頁面之后,便等于提交了如下惡意鏈接

      http://www.hotel.com/manage/delete.php?id =2

      此時在管理員不知情的前提下把id為2的點評刪除了,從而實現(xiàn)了利用評論系統(tǒng)的CSRF漏洞進行的攻擊。

      為防范利用這類的漏洞的攻擊,本系統(tǒng)采用了與防御XSS漏洞攻擊一樣的方法,利用str_replace函數(shù)將類似標簽中的“<”、“>”進行過濾編碼,代碼如下

      $cMyString = str_replace(“<”,”<”, $cMyString);

      $cMyString = str_replace(“<”,”<”, $cMyString);

      $cMyString = str_replace(“>”,”>”, $cMyString);

      $cMyString = str_replace(“>”,”>”, $cMyString);

      將這些代碼加入到上述code_filter()功能函數(shù)當中后便能實現(xiàn)對利用標簽進行CSRF漏洞的攻擊。

      此外需對服務(wù)器端的安全防范:(1)GET方法只用于從服務(wù)器端讀取數(shù)據(jù),POST方法用于向服務(wù)器端提交或者修改數(shù)據(jù)。僅使用POST方法提交和修改數(shù)據(jù)不能完全防御CSRF攻擊,但至少增加攻擊的難度[14];(2)限制驗證Cookie的到期時間,Cookie的合法時間越短,能利用Web應用程序的機會就越少;(3)在關(guān)鍵的服務(wù)端遠程響應請求之前,增加人機交互環(huán)節(jié),例如典型的圖片驗證碼,或者要求用戶提交額外的信息,可增加CSRF的攻擊難度,額外信息選擇無法預測或無法輕易獲得的。

      4 結(jié)束語

      該酒店點評系統(tǒng)中的留言和登錄等功能已在互聯(lián)網(wǎng)中得到廣泛的應用,經(jīng)過加入相對應的Web應用程序漏洞的防范措施后,可以杜絕大部分針對Web應用程序漏洞攻擊的出現(xiàn),該酒店管理系統(tǒng)的安全性能得到大幅提升。

      [1] 劉笑杭.SQL注入漏洞檢測研究[D].杭州:杭州電子科技大學,2014.

      [2] CNCERT. 2014年中國互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報告[EB/OL].(2015-06-02) [2016-02-22]http://www.cert.org.cn/publish/main/46/index.html.

      [3] Chris Anley.Advanced SQL injection in SQL server applications[M].TX,USA:NGSSoftware Insight Security Research(NISR),2002.

      [4] 陳小兵,張漢煜,駱力明,等.SQL注入攻擊及其防范檢測技術(shù)研究[J].計算機工程與應用,2007,43(11):150-152.

      [5] 田俊峰,杜瑞忠,楊曉暉.網(wǎng)絡(luò)攻防原理與實踐[M].北京:高等教育出版社,2012.

      [6] Shar L K,Tan H B K.Auditing the XSS defence features implemented in web application programs[M].NY,USA:Let Software,2012.

      [7] 仇新梁,康迪,周濤.Web漏洞掃描系統(tǒng)設(shè)計[J].保密科學技術(shù),2011(2):18-20.

      [8] 崔德友.淺析XSS腳本攻擊與防范策略[J].吉林廣播電視大學學報,2014(3):24-25.

      [9] Amit Klein. DOM based cross site scripting or XSS of the third kind[M].WK,USA:Web Appliction Security Consortium,2005.

      [10] 蔣志初,胡毅.一個WEB漏洞從發(fā)現(xiàn)到修補的實例分析[J].網(wǎng)絡(luò)安全技術(shù)與應用,2015(7):14-17.

      [11] 季凡,方勇,蒲偉,等.CSRF新型利用及防范技術(shù)研究[J].信息安全與通信保密,2013(3):75-76.

      [12] 肖紅. Web應用漏洞的分析和防御[D].西安:西安電子科技大學,2013.

      [13] Xiaoli Lin,Zavarsky P,Ruhl R,et al.Threat modeling for CSRF attacks[C].Japan:International Conference on Computational Science and Engineering,2009.

      [14] 張悅,楊學全.基于服務(wù)器端CSRF防御模塊的設(shè)計與實現(xiàn)[J].信息技術(shù)與信息化,2014(7):45-46.

      Testing and Solution on Security of Web Hotel Comment System

      SU Qian,HOU Jun

      (School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)

      To defend the attacks from Web application program vulnerabilities. This paper focuses on testing the security of a Web hotel comment system, at the same, studies three kinds of Web application program vulnerabilities: SQL injection, cross-site scripting attack and cross-site request forgery, which would occurs in the hotel comment system. Then it analyzes the occurrence principles and attacking processes of those Web application program vulnerabilities, and proposes a safety precaution and solution measure such as filter the special character and encode the transfer parameters. The results show that precaution and solution measure can defend the attacks from Web application program vulnerabilities effectively and enhance the security of a Web hotel comment system.

      Web hotel comment system; SQL injection; cross-site scripting attack; cross-site request forgery

      10.16180/j.cnki.issn1007-7820.2016.12.041

      2016- 02- 22

      蘇乾(1991-),男,碩士研究生。研究方向:計算機網(wǎng)絡(luò)及信息安全。

      TP277

      A

      1007-7820(2016)12-148-05

      猜你喜歡
      腳本攻擊者漏洞
      酒駕
      漏洞
      基于微分博弈的追逃問題最優(yōu)策略設(shè)計
      自動化學報(2021年8期)2021-09-28 07:20:18
      安奇奇與小cool 龍(第二回)
      數(shù)據(jù)庫系統(tǒng)shell腳本應用
      電子測試(2018年14期)2018-09-26 06:04:24
      正面迎接批判
      愛你(2018年16期)2018-06-21 03:28:44
      快樂假期
      中學生(2017年19期)2017-09-03 10:39:07
      三明:“兩票制”堵住加價漏洞
      漏洞在哪兒
      兒童時代(2016年6期)2016-09-14 04:54:43
      高鐵急救應補齊三漏洞
      鄂托克旗| 满城县| 巴塘县| 沾益县| 留坝县| 石柱| 贵州省| 兰考县| 永顺县| 龙门县| 阳原县| 察隅县| 犍为县| 阳泉市| 宜良县| 电白县| 海南省| 郯城县| 西城区| 澜沧| 承德县| 嘉义市| 濮阳市| 河津市| 兰州市| 扬中市| 南靖县| 泰宁县| 祁连县| 宣恩县| 灵山县| 襄垣县| 宜君县| 临沭县| 丰台区| 内黄县| 云林县| 马边| 枞阳县| 中阳县| 莆田市|