2015-02-17 74 views
1

最近我一直在使用JQuery,AngularJS & AJAX做一些前端代碼。對於服務器端編碼,我使用Java,Spring。將數據庫ID存儲在HTML頁面中安全嗎?

問題:將數據庫id存儲在HTML頁面中安全嗎?例如:業務域對象HOUSE具有名爲AIR_CONDITION的屬性。如果用戶想要通過UI更新AIR_CONDITION的類型,可以安全地將HOUSE_ID存儲在可用於將更新後的AIR_CONDITION值保存到數據庫中的html中?

如:代碼

<form action="updateAirCondition?houseId=22"> 
    <input type="checkbox" name="central" value="central"> Central air condition 
    <input type="checkbox" name="external" value="External" checked> External air condition 
    <input type="submit" value="Submit"> 
</form> 

更新:服務器端Java Spring Security的應用將是高度安全的,如果用戶沒有被授權這樣做的數據庫將不更新行。我唯一擔心的是SQL注入,無論如何總是讓用戶隱藏服務器端的東西(服務代碼或數據庫)總是更好。

+3

請注意,用戶可以將其更改爲他們希望的任何值,這意味着他們可以更新他們選擇的表中的任何行(您可能不想這麼做)。如果他們不應該能夠更新任何房子,那麼這是不安全的。 – 2015-02-17 22:03:27

回答

3

防止用戶更新記錄時,他們沒有權限這樣做的問題有點獨立於是否可以公開某個特定的id。即使你沒有在html中公開id,也有其他方法可以發現id:比如蠻力迭代。依靠主密鑰的祕密來加強安全性是一種典型的故障模式,稱爲security through obscurity。您應該有防止未經授權更新的服務器端檢查。例如,檢查當前登錄的用戶是否擁有他們試圖更新的記錄。在URL中公開主鍵通常很好。例如,StackOverflow在問題頁面和用戶配置文件頁面中具有主鍵。

+0

非常感謝。我已經更新了這個問題。服務器端代碼在域級別使用Spring Security進行高度安全保護。我只是想知道是否暴露主鍵是正常的事情。謝謝你回答解決我的查詢。 – hajime 2015-02-17 23:05:45

1

我覺得最好的辦法是隻加密該號碼,然後解密服務器端。這樣用戶不能改變它來影響其他行,並且不會將最終信息傳遞給用戶。

相關問題