2012-12-31 32 views
2

我在我的網站上遇到了一個很大的問題,我花了幾個月和幾個月的時間進行研究。問題在於用戶能夠使用像螢火蟲和其他類似方法的工具來更改我的網站的HTML。問題是,如果用戶更改了部分表單,他們可能會更改消息/帖子/等等的內容。如何保護我的html + PHP表單以防止用戶被黑客入侵/更改

我現在有意見,形式交往,職位和其他形式的大部分建立了這樣的(只要發送給使用用戶信息:

<form rel="1"></form> 

我用rel爲存儲的地方因此這將發送給ID爲1的用戶。然後問題是如果用戶在HTML中將其更改爲5,那麼將提交表單然後將其發送給用戶5.如何當信息到達服務器時,是否有可能再次檢查此信息,以便在發生更改或其他情況時不會通過。

我能想到的唯一辦法是對用戶ID進行哈希處理,然後將該值存儲在rel中。這不會解決問題,但它可能會讓別人更難找出問題。

+1

https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project – SLaks

回答

1

將用戶標識存儲在會話中。依靠來自用戶輸入的重要事情是一個可怕的想法。

session_start(); 
$_SESSION['user'] = array(); 
$_SESSION['user']['id'] = $result_set['id']; // or however else you may have retrieved their UID 
$_SESSION['user']['name'] = $result_set['username']; // STORE ALL THE VARIABLES!!! 
+0

謝謝,這是一個好主意。我也曾考慮過使用會話,這在某些情況下可以正常工作,但爲了讓您有一點理解,我的網站是一個類似於Facebook的社交網絡,那麼我將如何使用類似評論表單來執行此操作當一個新聞流類型的東西有一個頁面上有20個或更多的帖子? –

+0

使用會話應該完全適用於這種情況。 –

+0

嗯,我想我只是想知道如何收集每篇文章的所有信息,但我想它會像創建一個新的SESSION一樣簡單,因爲它會打印出我的每篇文章以及其他任何內容內容正確嗎?我想我一直認爲在同一時間舉行多場會議會有點過頭。像這樣的東西會被認爲是對的嗎? '$ _SESSION ['postID'] ['userID']' –

0

你應該考慮這樣做

  1. 用戶ID和用戶應存放在明確
  2. 密碼應與SHA和鹽被散列,鹽長度應爲相對平等SHA hash的長度(256,512等)
  3. 如果$ _SESSION ['userid']與數據庫用戶標識和$ _SESSION ['session_key'相匹配,則使用會話密鑰,服務器和$ _SESSION中存儲的隨機字符串']匹配數據庫session_key,這是安全的
  4. 在會話中使用過期計時器,存儲會話應該過期的時間值,始終檢查會話是否有效或是否過期
  5. 沒有驗證數據應該作爲純HTML存儲在任何DOM元素中,它應存儲在會議或最壞情況下的Cookie
+0

會話在站點退出時被破壞,爲什麼你需要一個計時器? –

+0

以防萬一他的瀏覽器打開讓我們說1小時......忘記他已登錄您的應用程序......其他人坐在他的電腦並可以訪問他的數據,不要以爲用戶將永遠關閉他們的瀏覽器 –

+0

哦,對,有些人離開電腦時仍然沒有關閉它。多麼的不幸。 –

相關問題