<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; or &#60;
>
&gt; or &#62;
&
&amp; or &#38;
"
&quot; or &#34;
'
&#39;
(
&#40;
)
&#41;
#
&#35;
%
&#37;
;
&#59;
+
&#43;
-
&#45;
n 盡可能使用存儲過程操作背景資料庫;
n 在生成SQL語句的地方:
Ø 過濾掉輸入變量中的雙引号和單引号;
Ø 過濾常用sql 關鍵字;
Ø 對于數值型字段變量,驗證其值确實是數字;
n 适當使用圖檔驗證;
n 驗證資料操作的權限;
本文轉自zkjian517 51CTO部落格,原文連結:http://blog.51cto.com/zoukejian/57966