永遠不要相信使用者輸入的!

2022-07-29 04:30:12 字數 917 閱讀 8264

以前我所忽略的東西這是,現在才算徹底的明白,虧我還做了那麼上時間的黑客愛好者。哎!說起來慚愧阿。。。

言歸正傳,起初還有點不敢苟同,現在看來我是真的明白了。

我們都知道http協議本身就是非常不可靠的,不要相信任何使用者的輸入,包括server變數裡面的任何東西,這是http安全程式設計的第乙個指導原則。(我是記住了)必要的時候進行資料的重新效驗。

我們都知道,怎麼樣去注入乙個**,如下面的**

$sql='select * from asd where name=\''.$_post['name'].'\'';

這其實是一句很簡單的**,但是卻缺少了必要的資料效驗。本來可以獲取乙個人的許可權的,前提是使用者名稱正確,好,我們來構造下函式看看。

我們將傳入的值換成'or''=''or' 裡面就變成了 name='or''='or'' 本來只是乙個單一的邏輯語句現在就變成了兩個邏輯語句了 包含了 or 。這樣就很顯然可以騙過效驗的**了。

所以我們不要都認為使用者一定會按照我們的預想進行輸入我們想要的資料,他是黑客呢?

在看下面的乙個例子,是我今天寫的乙個表單(在我沒有真正體會到其中含義時寫的)。

$value = $_g['gp_value'];

$sql = 'update xx set value =\''.$value.'\'  where ......';

看的出來下面幾個不符合我現在說的規則--不要相信使用者輸入的資料

1.沒有進行空格的去除。使用者無意間打了空格怎麼辦?

2.沒有進行資料的效驗。如果黑客利用此函式構造攻擊函式怎麼辦?

3.沒有進行必要的篩選操作。忽略了本地構造表單進行攻擊,說白了還是缺少了資料的效驗。

這是我今天所明白的道理。

所以,不要相信任何東西,如何在client端驗證過的東西,在伺服器端必須要重新驗證一次。抱著這個觀點放在腦子裡,寫出來的程式會好一些。

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

一直聽說 永遠不要相信使用者的輸入,我一直沒有足夠地重視。今天讓我徹底地明白這個安全原則是多麼的重要。最近上了乙個social game遊戲專案,其中涉及到道具的購買。我們將這個遊戲放到facebook和mixi平台上面,沒有發生任何問題 沒有人去攻擊 最近將其發布到人人網平台上,於是接二連三地攻擊...

永遠不要害怕那些你不曾相信的

qq個性簽名 永遠不要害怕那些你不曾相信的 下乙個雨季 我們擦肩而過而已。下乙個花季 我們各自悲傷而已。那些引以為傲的曾經 如今已沒半點珍惜。那些引以為傲的相信 如今已氾濫出記憶。隔著玻璃看雨中的世界,輕聲說 愛你。隔著回憶望眼淚的世界,悄然說 愛你。情侶簽名 彷徨彷徨,剩下的只是手足無措 情侶簽名...

顧客第一,相信使用者

今天是我入職的第201天,但自己的感覺好像是來了兩年,可能是因為在這200天裡,我幹了以前兩年的工作量吧 還記得剛入職的時候,那段時間正忙,基本上每天都是十點以後才下班,所以最近每天能九點下班了都感覺好像是早退了一樣,心裡還有點惴惴不安。雖然工作量比較大,但是自己一直都處於一種累並快樂的狀態,一是因...