2011-05-24 17 views
4

我已閱讀couplerelated questions對此,但他們不直接回答我的問題。像Firebug這樣的開發工具允許任何人在發送表單之前查看和處理表單數據。一個很好的例子就是調整一個隱藏的「會員ID」字段的值,以便表單提交被記入另一個用戶。保護使用Firebug的惡意用戶的表單數據的最佳方式?

防止此類篡改的最佳方法是什麼?我的研究表明將敏感表單輸入移動到服務器端腳本,但是還有其他選擇或考慮嗎?

我熟悉PHP和jQuery,所以我理想的解決方案是使用這兩種語言中的一種或兩種。

+3

不僅僅是「惡意」的用戶 - 我經常在有趣的頁面上運行firebug,只是爲了看看它們是如何放在一起的。 – 2011-05-24 20:13:59

回答

1

您不能使用jQuery安全性,因爲它全部在客戶端處理。

在你的例子中,只使用一個PHP會話來處理隱藏的輸入字段,因爲正如你正確地指出的那樣,這可以被操縱。

使用會話看起來像以下:

登錄頁面

<form action="login.php" method="post"> 
    <input type="text" name="username"> 
    <input type="password" name="password"> 
    <input type="submit" name="submit" value="submit"> 
</form> 

的login.php

// you have to include this on every page to be able to user sessions. 
// also make sure that you include it before any output 
session_start(); 

//Always sanitize the user input before doing any db actions. 

//For example by using: `mysql_real_escape_string()` (http://php.net/manual/en/function.mysql-real-escape-string.php). 

// check user credentials against db 

$_SESSION['user'] = $dbresult['username']; 

頁,其中,用戶ID,是-required.php

session_start(); 

if (!isset($_SESSION['user'])) { 
    // user is not logged in! 
} else { 
    // use user info to place order for example 
} 

Th e會話將被激活,直到用戶關閉他的瀏覽器/直到會話過期(這是一個PHP設置)

以上只是一些示例代碼給你一個想法。

它可以處理較小的項目,但是隨着項目變得越來越複雜,我建議使用MVC(模型,視圖,控制器)方式。 (http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

但是,這只是一個整體的其他故事:)

+0

謝謝。我正在研究使用PHP會話,因爲我從來沒有在服務器端腳本中使用它們來收集用戶數據。 – 2011-05-24 22:04:53

+0

@Ryan:更新了我的回答,給出了一個使用會話 – PeeHaa 2011-05-24 22:18:58

+0

rock的例子。我會給這個旋轉並報告回來。萬分感謝。 – 2011-05-25 01:02:08

1

這裏有一些基本的建議:

  • 您需要驗證使用服務器端(PHP)腳本的形式輸入。

  • 而不是依靠表單中的敏感信息,如成員ID,您可以將這些數據緩存在服務器會話中。這樣,惡意用戶就無法立即更改數據。

你仍然可以使用jQuery驗證是爲了方便趕基本輸入的問題,但你只能信任正在使用服務器端代碼驗證數據。

+0

感謝您的回覆。你介意在服務器會話中緩存數據嗎?我使用的CMS可能已經有了這些信息,但我不知道如何在我的服務器端腳本中抓住它。有沒有一種標準的方式來獲取這些信息在PHP中? (編輯:我現在正在研究這個) – 2011-05-24 22:00:19

相關問題