天天看點

WEB應用資料驗證指南

<b>WEB</b><b>應用資料驗證指南</b>

<b>1</b><b>.為什麼要驗證資料?</b>

如果不驗證資料,容易導緻WEB應用出現多種漏洞,比如:SQL注入攻擊,指令注入攻擊,跨站點腳本攻擊,編碼攻擊,檔案系統攻擊和緩沖區溢出。是以,為了保護WEB應用的安全,我們必須驗證資料。

<b>2</b><b>.什麼地方需要驗證資料?</b>

 所有從使用者或其它裝置接受資料的代碼部分。

<b>3</b><b>.什麼資料需要驗證?</b>

HTTP頭部,cookies,,session,查詢字元串,表格字段,和隐藏字段等。

<b>4</b><b>.怎樣驗證資料?</b>

<b>4.1 </b><b>驗證政策</b>

按順序選擇使用下面的四種政策:

n 接受正确的資料:如果知道某個資料的所有特點,就可以隻接受具有所有這些特點的資料。比如對手機号碼的驗證就可以使用本方法。

n 拒絕錯誤的資料:如果知道具有某些特點的資料是錯誤的,就可以明确拒絕具有這些特點的資料。

n 規範化資料:對資料進行分析,去掉有問題的部分,并進行适當的修改和轉換,進而将其轉化為正确的資料。

n 不作驗證資料:  萬不得已才不驗證資料。

<b>4.2</b><b>驗證方法</b>

n 檢查資料類型;

n 檢查字元型資料的長度範圍;

n 檢查數值型資料的大小範圍;

n 驗證資料來源進行, 防止跨站攻擊( 也可以在APACHE配置檔案裡面做);

n 過濾掉下面的特殊字元或為其編碼:

<b>Character</b>

<b>Encoding</b>

&lt;

&amp;lt;   or &amp;#60;

&gt;

&amp;gt;   or &amp;#62;

&amp;

&amp;amp;  or &amp;#38;

"

&amp;quot; or &amp;#34;

'

&amp;#39;

(

&amp;#40;

)

&amp;#41;

#

&amp;#35;

%

&amp;#37;

 ;

&amp;#59;

+

&amp;#43;

-

&amp;#45;

n 盡可能使用存儲過程操作背景資料庫;

n 在生成SQL語句的地方:

Ø 過濾掉輸入變量中的雙引号和單引号;

Ø 過濾常用sql 關鍵字;

Ø 對于數值型字段變量,驗證其值确實是數字;

n 适當使用圖檔驗證;

n 驗證資料操作的權限;

本文轉自zkjian517 51CTO部落格,原文連結:http://blog.51cto.com/zoukejian/57966