1. 程式人生 > >淺談常用的幾種web攻擊方式以及解決辦法

淺談常用的幾種web攻擊方式以及解決辦法

        身在網際網路的時候,web在給我們帶來便利的同時,有些人也在盯著這些便利,因此出現了攻擊網站的現象。所以我們在開發的時候,要注意這些容易被攻擊的地方,以及做好防禦的措施,下面將介紹一些這些常見的攻擊手段以及解決辦法

       1.SQL注入

            攻擊方式

           大多數人擁有字母數字式密碼,或者有安全意識的人,擁有附帶其他鍵碟符號的字母數字式密碼。由於 這種想法,開發人員可能允許輸入任何字元作為密碼。這通常是沒問題的,除非他們忘記清潔或檢查輸入資料。這種情況比應該的要發生的頻繁得多。使用 SQL 資料庫的密碼系統(在許多網站上非常普遍的場景)可能執行這樣的查詢:

           SELECT * FROM users WHERE 'username' = '$USER' AND 'password'='$PASS'; 

          $USER 和 $PASS 會用使用者提供的使用者名稱和密碼來代替。那麼如果使用者輸入‘bob’和‘1234’,那麼結果的查詢是:
           SELECT * FROM users WHERE 'username' = 'bob' AND 'password' = '1234';

          而來自資料庫的返回值會是所有用 bob 作為使用者名稱且用 1234 作為密碼的資料元組。如果黑客輸入 admin 和 <<’hi’ 或 1=1>>–,那麼查詢是:
          SELECT * FROM users WHERE 'username' = 'admin' and `password` = 'hi' OR 1=1--'

          注意使用者輸入的引號如何與原始查詢中的第三個引號匹配。資料庫現在會返回使用者名稱為 admin 的所有元組,並且會取消對密碼的檢查,因為 ‘password’ = ‘hi’ OR 1=1 命令資料庫尋找密碼是 hi 的元組或 1=1 的元組,而由於 1 總是 1,所以每行都是候選。– 是 SQL 註釋標誌,取消查詢中原始的其他引號,並且還將取消任何額外的檢查,因此如果有額外的憑證(也就是,keyfob 或 captcha)也會被忽略。現在黑客可以以管理員的身份進入系統並且不用不得不給出合法的密碼。通過利用越來越複雜的查詢,黑客可以變更、新增,或查詢資料。對於資料庫,這令黑客具有同應用程式相同的特權。

          解決方案

          a.前端頁面需要校驗使用者的輸入資料(限制使用者輸入的型別、範圍、格式、長度),不能只靠後端去校驗使用者資料。一來可以提高後端處理的效率,二來可以提高後端資料的安全。
          b.後端不要動態sql語句,使用儲存過程查詢語句。限制使用者訪問資料庫許可權。後端接受前端的資料時要過濾一些特殊字元(如:“--”等字元)
          c.後端如果出現異常的話,要使用自定義錯誤頁,防止使用者通過伺服器預設的錯誤頁面找到伺服器漏洞。

           安全查詢(引數化查詢):

//獲取引數,拆分引數
 String custname = request.getParameter("customerName"); 
 String query = "SELECT account_balance FROM user_data WHERE user_name = ? ";
 
 //建立連線
 PreparedStatement pstmt = connection.prepareStatement( query );
 //將引數格式化
 pstmt.setString( 1, custname); 
 //獲取查詢結果
 ResultSet results = pstmt.executeQuery();
           安全查詢(儲存過程)
//獲取引數
String custname = request.getParameter("customerName"); 
try {
     //呼叫資料庫的儲存過程
     CallableStatement cs = connection.prepareCall("{call sp_getAccountBalance(?)}");
     //將引數格式化
     cs.setString(1, custname);
     //獲取查詢結果
     ResultSet results = cs.executeQuery();        
     
     } catch (SQLException se) {            
}
          不安全查詢
String query = "SELECT account_balance FROM user_data WHERE user_name = " + request.getParameter("customerName");
 //動態查詢,直接拼接字串
 try {
     //建立連線
     Statement statement = connection.createStatement();
     //獲取查詢結果
     ResultSet results = statement.executeQuery( query );
 }

      2.XSS攻擊

          引用:XSS攻擊及防禦

      3.CSRF攻擊

      4.Dos攻擊

         Dos攻擊是一種針對伺服器的能夠讓伺服器呈現靜止狀態的攻擊方式。有時候也加服務停止攻擊或拒絕服務攻擊。其原理就是傳送大量的合法請求到伺服器,伺服器無法分辨這些請求是正常請求還是攻擊請求,所以都會照單全收。海量的請求會造成伺服器停止工作或拒絕服務的狀態。這就是Dos攻擊。            攻擊方式:                              Ping Flood攻擊即利用ping命令不停的傳送的資料包到伺服器。
                             SYN Flood攻擊即利用tcp協議原理,偽造受害者的ip地址,一直保持與伺服器的連線,導致受害者連線伺服器的時候拒絕服務。
           解決方案:                              設定路由器與交換機的安全配置,即設定防火牆。

      5.Cookies攻擊

          通過Java Script非常容易訪問到當前網站的cookie。你可以開啟任何網站,然後在瀏覽器位址列中輸入:javascript:alert(doucment.cookie),立刻就可以看到當前站點的cookie(如果有的話)。攻擊者可以利用這個特性來取得你的關鍵資訊。例如,和XSS攻擊相配合,攻擊者在你的瀏覽器上執行特定的Java Script指令碼,取得你的cookie。假設這個網站僅依賴cookie來驗證使用者身份,那麼攻擊者就可以假冒你的身份來做一些事情。
現在多數瀏覽器都支援在cookie上打上HttpOnly的標記,凡有這個標誌的cookie就無法通過Java Script來取得,如果能在關鍵cookie上打上這個標記,就會大大增強cookie的安全性

     6.重定向攻擊

         一種常用的攻擊手段是“釣魚”。釣魚攻擊者,通常會發送給受害者一個合法連結,當連結被點選時,使用者被導向一個似是而非的非法網站,從而達到騙取使用者信任、竊取使用者資料的目的。為防止這種行為,我們必須對所有的重定向操作進行稽核,以避免重定向到一個危險的地方.常見解決方案是白名單,將合法的要重定向的url加到白名單中,非白名單上的域名重定向時拒之,第二種解決方案是重定向token,在合法的url上加上token,重定向時進行驗證.

     7.檔案上傳攻擊

        a.檔名攻擊,上傳的檔案採用上傳之前的檔名,可能造成:客戶端和服務端字元碼不相容,導致檔名亂碼問題;檔名包含指令碼,從而造成攻擊.
b.檔案字尾攻擊.上傳的檔案的字尾可能是exe可執行程式,js指令碼等檔案,這些程式可能被執行於受害者的客戶端,甚至可能執行於伺服器上.因此我們必須過濾檔名字尾,排除那些不被許可的檔名字尾.
c..檔案內容攻擊.IE6有一個很嚴重的問題 , 它不信任伺服器所傳送的content type,而是自動根據檔案內容來識別檔案的型別,並根據所識別的型別來顯示或執行檔案.如果上傳一個gif檔案,在檔案末尾放一段js攻擊指令碼,就有可能被執行.這種攻擊,它的檔名和content type看起來都是合法的gif圖片,然而其內容卻包含指令碼,這樣的攻擊無法用檔名過濾來排除,而是必須掃描其檔案內容,才能識別。         注意:該文章參照以下資料

相關推薦

常用web攻擊方式以及解決辦法

        身在網際網路的時候,web在給我們帶來便利的同時,有些人也在盯著這些便利,因此出現了攻擊網站的現象。所以我們在開發的時候,要注意這些容易被攻擊的地方,以及做好防禦的措施,下面將介紹一些這些常見的攻擊手段以及解決辦法。        1.SQL注入      

常用web攻擊方式

一、Dos攻擊(Denial of Service attack)   是一種針對伺服器的能夠讓伺服器呈現靜止狀態的攻擊方式。有時候也加服務停止攻擊或拒絕服務攻擊。其原理就是傳送大量的合法請求到伺服器,伺服器無法分辨這些請求是正常請求還是攻擊請求,所以都會照單全收。海量的請求會造成伺服器停止工作或拒絕服務的

java中ArrayList使用remove刪除元素時常見的問題及解決辦法

一,for迴圈使用remove()刪除座標來刪除元素。 問題現象:迴圈的時候被刪除元素的下個元素不能讀取到。程式碼現象如下: List<String> testList1 = new ArrayList<Stri

常用視頻加密原理及加密的應用形式

課程 所有 客戶 直接 無限 最終 技術 網頁 現在 一、視頻加密視頻加密是對某些自有版權的視頻進行加密處理,用戶只有在一定的條件下才能獲得視頻的觀看權。比如對於教育視頻加密後,只有學員才能觀看,每個學員都有自己的唯一賬號。或者說設定在一定的時間內可以無限次觀看,還有就是不

分散式架構的主要開發方式

 面向服務架構soa以其獨特的優勢越來越受到企業的重視,它可以根據需求通過網路對鬆散耦合的粗粒度應用元件進行分散式部署、組合和使用。服務層是SOA的基礎,可以直接被應用呼叫,從而有效控制系統中與軟體代理互動的人為依賴性。Soa的開發方法一般主要有開源的dubbo、dubbox

nginx upstream 常用調度方式

均衡 gin 字節 默認 結果 根據 主機 upstream 指定 nginx可以根據客戶IP進行負載均衡,在upstream裏設置ip_hash,以可以對同一個C類地址段的客戶端選擇同一個後端服務器,除非那個後端服務器宕了才會換一個.C類地址:C類地址第1字節、第2字節和

HTML5之圖片在Retina屏的常用處理方式

tin screen width html5 bar color pan led image Media Queries使用css3的媒體查詢實現高清屏的圖片處理。 @media only screen and (-webkit-min-device-pixel-rat

深拷貝和拷貝及實現方法

rgb bsp for ace onos 都是 UNC get con 討論深拷貝與淺拷貝之前,要先回顧一下值傳遞與引用傳遞: 值傳遞: var a = 10; var b = a; b++; //console.log(a,b)//a:10 b:11 引用傳遞: v

廣告投放系統常用防作弊方式

1、IP防止作弊   這種主要是按照24小時唯一IP計費,將訪問使用者的IP地址記入資料庫中,當出現了重複IP地址時不予計費。很多惡意點選廣告的人都會利用撥號器改變IP地址,這種情況下我們可以通過C段IP來辨別,如果出現了很多IP地址C段相同的情況,就很有可能是作弊。通過I

JSP常用跳轉方式

這次做專案,用到幾種不同的JSP跳轉的方式,在此總結5中常用方法。          常用的跳轉方式有以下幾種: (1)href超連結標記,屬於客戶端跳轉 (2)使用javascript完成,屬於客戶端跳轉 (3)提交表單完成跳轉,屬於客戶端跳轉 (4)使用response

asp.net中常用身份驗證方式

前言 在B/S系統開發中,經常需要使用“身份驗證”。因為web應用程式非常特殊,和傳統的C/S程式不同,預設情況下(不採用任何身份驗證方式和許可權控制手段),當你的程式在網際網路/區域網上公開後,任何人都能夠訪問你的web應用程式的資源,這樣很難保障應用程式安全性。通俗

事務有哪些特性?spring的事務管理有方式實現,如何實現?spring 中常用的兩事務配置方式以及事務的傳播性、隔離級別

事務有哪些特性?             1.原子性:一個事務中所有對資料庫的操作是一個不可分割的操作序列,要麼全做要麼全不做            2.一致性:資料不會因為事務的執行而遭到破壞            3.隔離性:一個事物的執行,不受其他事務的干擾,即併發執

jquery常用遍歷方式

1、找class為  otherIdentifier 下 class為form-control 的input   如果input 值為空 則 disable $(document).ready(function(){  $(".otherIdentifier").find(

Vue2 常見開局方式

fig elm temp common disable .... false app oot 在SF問題中看到了一個關於vue-cli中的template問題,問題是這樣的:用vue-cli工具生成的main.js中: import Vue from ‘vue‘ i

最近接觸的APP支付方式——支付寶支付

.net core 很多 app 用法 http 相同 沒有 圖片 app支付 項目是在VS2017上、基於.net core 開發的web api 接口 所有的支付接入之前都要先申請好自己的商戶平臺,還有有一個賬戶用於測試使用,這些沒有事先配置好,那麽接下來的開發會無從下

愛創課堂每日一題第五十八天-javascript對象的創建方式

前端 前端學習 前端入門 北京前端1,工廠模式2,構造函數模式3,原型模式4,混合構造函數和原型模式5,動態原型模式6,寄生構造函數模式7,穩妥構造函數模式愛創課堂每日一題第五十八天-javascript對象的幾種創建方式

javascript對象的創建方式整理

添加 屬性和方法 {} ceo this scrip 方法 alert type 1.工廠模式 //工廠模式雖然解決了創建多個相似對象的問題,但卻沒有解決對象識別的問題(即怎樣知道一個對象的類型)。 function createPerson(name,age,job){

JS對象的創建方式

push 排序 pos 即使 重復字符 order data 默認 返回值 1、join() join(separator): 將數組的元素組起一個字符串,以separator為分隔符,省略的話則用默認用逗號為分隔符,該方法只接收一個參數:即分隔符。 1 2

SQL Server中遍歷方式比較

不同 .com font size 常用 分享 分享圖片 遊標 inf SQL遍歷解析   在SQL的存儲過程,函數中,經常需要使用遍歷(遍歷table),其中遊標、臨時表等遍歷方法很常用。面對小數據量,這幾種遍歷方法均可行,但是面臨大數據量時,就需要擇優選擇,不同的遍歷方

應用層與內核的通信方式

物理內存 是什麽 nts iat 其他 輸入緩沖 BE virt getc 應用程序與驅動程序據我所知,細分可以分6種,ReadFile,WirteFile方式的緩沖區設備讀寫,直接方式讀寫,和其他方式讀寫。Io設備控制操作(即DeviceControl)的緩沖內存模式IO