1. 程式人生 > >轉載自-天佑li,一般現在常見的網站攻擊方式

轉載自-天佑li,一般現在常見的網站攻擊方式

 sql注入,xss攻擊,csrf攻擊,檔案上傳漏洞,訪問控制。這些是一般網站容易發生的攻擊方式,接下來我們一一分析它們是如何攻擊以及防範的。


一、sql注入


<1>什麼是sql注入?


        sql注入說的通俗一些就是使用者在http請求中注入而已的程式碼,導致伺服器使用資料庫sql命令時,導致惡意sql一起被執行。


使用者登入,輸入使用者名稱 zhangsan,密碼 ‘ or ‘1’=’1 ,如果此時使用引數構造的方式,就會出現



  
  1. select * from user

   where name = 'zhangsan'    and password = '' or '1'='1'


 這樣zhangsan使用者沒有密碼也可以被登陸,如果使用者注入的是操作表的sql,就有大麻煩了。


<2>怎麼防範sql注入?


1.不用拼接 SQL 字串


 2. 有效性檢驗。(前端後端都需要。第一準則,外部都是不可信的,防止攻擊者繞過Web端請求)


 3過濾 SQL 需要的引數中的特殊字元。比如單引號、雙引號。推薦幾個函式mysql_real_escape_string()  addslashes()htmlentities() htmlspecialchars() strip_tags()  intval()


  4.限制字串輸入的長度。


二、xss攻擊


<1>什麼是xss攻擊


       跨站點指令碼攻擊,指攻擊者通過篡改網頁,嵌入惡意指令碼程式,在使用者瀏覽網頁時,控制使用者瀏覽器進行惡意操作的一種攻擊方式。


假設頁面上有一個表單:



  
  1. <input  type="text" name="name" value="lisi"/>


如果,使用者輸入的不是一個正常的字串,而是



  
  1. "/><script>alert("haha")</script><!-


此時,頁面變成下面的內容,在輸入框input的後面帶上了一段指令碼程式碼。


  
  1. <input  type="text" name="name" value="樑桂釗"/><script>alert("haha")</script><!-"/>


      這端指令碼程式只是彈出一個訊息框,並不會造成什麼危害,攻擊的威力取決於使用者輸入了什麼樣的指令碼,只要稍微修改,便可使攻擊極具攻擊性。常見的就是使用者一般在評論中或者反饋中使用xss。


<2>如何防範xss


同sql注入一樣。可以限制輸入字串的長度,對HTML轉義處理。將其中的”<”,”>”等特殊字元進行轉義編碼。


三、csrf攻擊


<1>什麼是csrf攻擊


      跨站點請求偽造,指攻擊者通過跨站請求,以合法的使用者的身份進行非法操作。可以這麼理解CSRF攻擊:攻擊者盜用你的身份,以你的名義向第三方網站傳送惡意請求。CRSF能做的事情包括利用你的身份發郵件,發簡訊,進行交易轉賬,甚至盜取賬號資訊。跨站點請求偽造,指攻擊者通過跨站請求,以合法的使用者的身份進行非法操作。可以這麼理解CSRF攻擊:攻擊者盜用你的身份,以你的名義向第三方網站傳送惡意請求。CRSF能做的事情包括利用你的身份發郵件,發簡訊,進行交易轉賬,甚至盜取賬號資訊。


<2>怎麼防止csrf


1.  安全框架使用。比如yii lavarel等。

2.  token機制。在HTTP請求中進行token驗證,如果請求中沒有token或者token內容不正確,則認為CSRF攻擊而拒絕該請求。

3. 驗證碼。通常情況下,驗證碼能夠很好的遏制CSRF攻擊,但是很多情況下,出於使用者體驗考慮,驗證碼只能作為一種輔助手段,而不是最主要的解決方案。

4.   referer識別。在HTTP Header中有一個欄位Referer,它記錄了HTTP請求的來源地址。如果Referer是其他網站,就有可能是CSRF攻擊,則拒絕該請求。但是,伺服器並非都能取到Referer。很多使用者出於隱私保護的考慮,限制了Referer的傳送。在某些情況下,瀏覽器也不會發送Referer,例如HTTPS跳轉到HTTP。


四、檔案上傳漏洞


<1>什麼是檔案上傳漏洞


       檔案上傳漏洞,指的是使用者上傳一個可執行的指令碼檔案,並通過此指令碼檔案獲得了執行服務端命令的能力。比如使用者上傳一個可以關機的執行檔案,你的損失就大發了。


<2>如何防範


1. 檔案上傳的目錄設定為不可執行。

2. 判斷檔案型別。在判斷檔案型別的時候,可以結合使用MIME Type,字尾檢查等方式。因為對於上傳檔案,不能簡單地通過後綴名稱來判斷檔案的型別,因為攻擊者可以將可執行檔案的字尾名稱改為圖片或其他字尾型別,誘導使用者執行。

3. 對上傳的檔案型別進行白名單校驗,只允許上傳可靠型別。

4. 上傳的檔案需要進行重新命名,使攻擊者無法猜想上傳檔案的訪問路徑,將極大地增加攻擊成本,同時向shell.php.rar.ara這種檔案,因為重新命名而無法成功實施攻擊。

5. 限制上傳檔案的大小。

6. 單獨設定檔案伺服器的域名。


五、訪問控制


即RBAC。現在一般網站都已經不存在這種問題了。