2012-09-12 35 views
0

我想弄清楚最好的做法,以及最安全的方式來存儲一個變量與JavaScript的一個Web應用程序,我正在開發。最安全的方式來存儲變量使用javascript

我有使用php,$ _GET和mod_rewrite生成的頁面。它們是通過url提供的id生成的。例如:http://example.com/1125/(因爲mod_rewrite實際發生的是:http://example.com?id=1125)。 PHP需要$ _GET ['id'],並根據給定的ID從數據庫中檢索信息,等等。

我遇到的問題是,我在該頁面上有一個窗體,用戶可以發佈一個問題,通過ajax發送。我不知道存儲頁面的id($ _GET ['id'])的最佳方式。

現在,我將id存儲在表單中的一個隱藏輸入中(例如:「/>)。當表單提交給服務器並且php看一個$ _POST時,它包含[」當我通過頁面中的表單提交問題時,我就是這麼發送頁面的ID。

我認爲這不安全的原因是,任何人都可以編輯html(例如通過Chrome的檢查元素),並將隱藏的輸入(id)值更改爲任何其他ID

所以我的問題是,什麼是最安全的方式,我可以存儲該id與JavaScript,所以當提交問題表單時,它可以安全發送正確的ID到服務器?或者任何其他採用最佳實踐方法思考的建議?

+0

你可以使用來自原始頁面的SESSION_數組來傳遞它。那麼你不必將它存儲在隱藏的領域。 – Brant

+1

不知道爲什麼你希望JS在這種情況下存儲ID!爲什麼不讓php處理整個過程? – hsalama

+0

我以爲已經這樣,但是如果有人訪問http://example.com/1111/,然後打開另一個標籤並轉到另一個頁面,例如http://example.com/2222/ $ _SESSION id變量將更改爲2222,如果它們返回到標識爲1111的選項卡並且提交一個問題($ _SESSION ['id']仍將包含2222而不是1111)。 –

回答

0

您只需要驗證接收到ajax的php頁面中的id,如果id有效並且用戶有權使用它,那麼它就沒關係,如果他通過chrome更改它也沒關係或者其他什麼,但你需要驗證,因爲如果他改變了屬於其他用戶的id,那麼你必須在這種情況下檢測出錯誤。

這只是根據您的應用程序中的專家驗證您的輸入。

+0

我想避免有一個用戶誰有權在頁面id 1111或page-id 2222上發佈問題,通過更改html在頁面id 1111上發佈id爲2222的問題。有道理哈哈? –

相關問題