web開發安全守則之永遠不要相信使用者的輸入

2022-03-22 09:52:53 字數 789 閱讀 5140

一直聽說 永遠不要相信使用者的輸入,我一直沒有足夠地重視。今天讓我徹底地明白這個安全原則是多麼的重要。

最近上了乙個social game遊戲專案,其中涉及到道具的購買。我們將這個遊戲放到facebook和mixi平台上面,沒有發生任何問題(沒有人去攻擊)。最近將其發布到人人網平台上,於是接二連三地攻擊出現了。其他的一些攻擊問題我不詳細說了,就談談我開發的購買道具時候出現的問題:

下面我簡單地把**模擬一下:

從flash端請求的引數:num(購買道具數量), typeid(道具的標示);

我這邊的引數處理: $num = intval($_post['num']); $id = intval($_post['typeid']); .....後面是程式的邏輯處理部分,即為使用者新增道具。

看到這裡,如果不看下文,大家會想到可以使用什麼來攻擊了嗎?當然所有的php介面呼叫之前作過了安全檢查的,即只有登陸的使用者才有許可權呼叫購買道具的介面,

這一點大家不用考慮。

原因:攻擊者使num為負數,沒有檢查購買道具數量是否為正值,所以後面所有的判斷對這個負值都沒有起作用,於是使用者就得到了負數個道具,由於在使用道具的時候沒有判斷使用者的道具是否可以為負數,只是在原有的基礎上減一,使用者道具的數量為負數,然而使用者可以繼續使用該道具。

結果就是攻擊者獲得了大量的道具,並對資料庫的完整性產生破壞。

要解決上面的問題只要對使用者的輸入做乙個判斷即可,首先驗證使用者購買道具的數量是否大於0,否則就給出錯誤資訊,

在使用者使用的道具的時候再次判斷使用者是否有該道具,同樣給出錯誤資訊。

總結:在處理使用者輸入時,一定要防止非法的請求。

web開發之資料安全

關於介面安全,一般非常簡單的作用,只是使用者驗證,即合法性檢查。我乙個老同事一直這樣用 個人感覺也未嘗不可 每次請求 介面的時候 驗證下access token,比如這個token是個 md5值,再在這個值上面加幾個隨機數,這這值就不是md5的值了,可破解的難道就大大增加了。if post acce...

Web安全之CSRF攻擊

csrf是什麼?csrf cross site request forgery 中文是跨站點請求偽造。csrf攻擊者在使用者已經登入目標 之後,誘使使用者訪問乙個攻擊頁面,利用目標 對使用者的信任,以使用者身份在攻擊頁面對目標 發起偽造使用者操作的請求,達到攻擊目的。舉個例子 簡單版 假如有個加關注...

Web安全之CSRF攻擊

源文位址 csrf是什麼?csrf cross site request forgery 中文是跨站點請求偽造。csrf攻擊者在使用者已經登入目標 之後,誘使使用者訪問乙個攻擊頁面,利用目標 對使用者的信任,以使用者身份在攻擊頁面對目標 發起偽造使用者操作的請求,達到攻擊目的。舉個例子 簡單版 假如...