2007年5月13日 星期日

Data injection

非攻擊資料庫的資料隱碼
而我們終於又談到了另一個重點。資料庫隱碼只有對資料庫才有效嗎?其實不然如果你的程序過於簡單而容易被猜透,或者程式設計時不小心細節。就要當心你會糟受隱碼的攻擊了。來一個經典的實例吧:

信件回覆程式

PHP CODE: //DO....
//.......
mail("somexxx@xdsfasd.com.tw",$_POST["subject"],$_POST["comment"],"From:".$_POST["sender"]);


?>




這樣的寫法看起來非常的合理,也沒有什麼錯誤呀。我相信還是有非常多的設計師仍然用這樣的方式在寫作程式。(包括作者)如果你的語法是這樣寫的話,你就要小心的。這樣寫法會發生包什麼事呢?

如果使用者在後面的 $_POST["sender"] 開始做起了文章來,如果使用者傳進來的是:

PHP CODE: $_POST["sender"]

112233 @ .....
bcc: 一堆收件人
其他header訊息


?>



那麼你的簡單到不行的小程式就淪為別人的垃圾郵件工具了。

結論
所以我們還是必須的不斷的重申:
1.程式設計師一定要先想清楚使用者會輸入的是什麼的資料. 而且必須要做適當的防護。
2.不要有覺得 "反正又沒有人會知道" 的想法 (程式設計師是偷懶不得的,該加的還是要加)


現在的張貼機器人可不會照你的表單給值的。

沒有留言:

網誌存檔

關於我自己

Aspire freedom , Hope to do Soming make self complete ~