2013-01-08 41 views
1

在黑客攻擊的安全方式,我發現類似如下:在一個web應用程序做一些

<input type="hidden" value="1500" name="price"> 

,如果你有足夠的智慧來改變值(這是由客戶端 - 徵收Web應用程序的一側)..您可以更改該項目的價格。 我想知道..如何讓這行代碼更安全?我想你應該強調服務器端的價格作爲一個開始..任何建議如何處理這樣的問題是非常受歡迎的..感謝很多..

+0

記住,安全的客戶端存儲,沒有客戶端存儲... – fatfredyy

回答

0

不包括它在客戶端。爲什麼價格應該是客戶端,而不是首先向用戶展示? (其實,客戶的價格沒有任何損害......你想要你的客戶看到價格,但實際上這是愚蠢的,實際上信任這個價格是準確的,而且還沒有被篡改

在處理訂單中的物品時,您應該根據ItemId查詢價格,不接受客戶的價格,任何客戶端數據都會被自動視爲不可信,並且應該進行驗證。上下文中,假設這是一個項目,並且您點擊一個「添加到購物車」選項,接受隱藏字段值是合適的價格將是愚蠢的。驗證它意味着,在這種情況下,不僅僅是確保它是十進制數字,但實際價格。

取而代之的是,該項目應該有一個ID,並在服務器端的調用將使用該ID來查找價格在產品表,然後用驗證過的價格,從Products表中檢索。

即使您要加密價格,您也必須假定它已被篡改。這是在初始設計階段應該實施安全和常識的明顯情況之一。如果是這樣的話,那樣的事情首先不會成爲代碼。


所有這一切說,可能有一個合法的商業原因,因爲它與訂購過程無關。也許開發團隊希望通過隱藏的領域暴露出來。如果他們希望通過javascript或其他方式來讀取價格,那麼將其可用是有意義的......例如,對於客戶端功能,例如在更改數量時可以對其進行調整。我不確定我會這樣做,但在這種情況下,它沒有任何傷害。

+0

I完全同意你..這基本上是我在想什麼,但你的答案是更好地exaplained(: 感謝您的答案.. – user1405417

0

通常,您在網頁上顯示價格,以便用戶可以知道他們支付了多少,但最終的價格決定仍然來自服務器上的價格數據庫。

如果您有很多價格變動正在進行,您可以通過這種方式通知用戶價格是否在查看和點擊購買之間發生變化。

如果網頁中包含明確的價格,它只是邀請人們設置自己的價格。如果你打算這樣做,那麼你可能會做廣告並獲得這樣一個功能意味着的額外業務。

如果你是黑客,我建議你戴上你的白帽子,並通過電子郵件告知網站的所有者,讓他們知道他們有問題。

0

我看過這個hack版本,價格設置爲負數;當購物車被累計時,這意味着黑客可以獲得免費的東西。

如果頁面允許您設置一個價格的電視舉例來說 - £5,000,然後我可以添加品爲£5001說我的車只收取你的網站£1

這無助於解決你的問題,但正如在這裏的其他帖子所說,你真的不應該相信來自你的網頁的價格。當你計算任何價格時,你應該從你的產品數據庫中得到價值,希望沒有產品在那裏有 - £5,000的價格...

+0

我甚至不會認爲這樣的漏洞存在於真實的情況下。 @SimonMartin非常出色(: )你會如何對此漏洞進行分類? – user1405417

+0

不記得;但請查看http://blog.whitehatsec.com/root-of-the-issue/,因爲它解釋了基本上相信_nothing_從你的用戶,**總是* *驗證服務器端,即使這樣你仍然需要應用一些邏輯來確保你沒有被利用。沒有銀彈,你需要像洋蔥一樣的安全......層層分開 –