我有一個數據庫支持的Web應用程序。我需要這個功能:在網絡應用程序中如何處理這個問題?
有一個包含行的表,我需要生成一個URL。如果用戶點擊URL(例如包含在電子郵件中),則會爲特定ID更新列值。
我知道我可以創建一個鏈接,比如http://server.com/update?id=30303030&newvalue='dxckdk';
但是,這不會很安全,因爲有人可以嘗試使用生成的ID發送請求。
什麼是最好的方法來保證這一點?
謝謝你的幫助!
J
我有一個數據庫支持的Web應用程序。我需要這個功能:在網絡應用程序中如何處理這個問題?
有一個包含行的表,我需要生成一個URL。如果用戶點擊URL(例如包含在電子郵件中),則會爲特定ID更新列值。
我知道我可以創建一個鏈接,比如http://server.com/update?id=30303030&newvalue='dxckdk';
但是,這不會很安全,因爲有人可以嘗試使用生成的ID發送請求。
什麼是最好的方法來保證這一點?
謝謝你的幫助!
J
您可以嘗試在查詢字符串值上使用加密。這種方式沒有人可以改變數據事實上沒有人可以得到你在querystring中發送的內容。這個技巧有加密/解密開銷的不利方面,但它是安全的。
我喜歡這種方法,因爲它是鏈能夠同時支持加密和正常的查詢字符串 http://weblogs.asp.net/bradvincent/archive/2008/10/27/helper-class-querystring-builder-chainable.aspx
http://www.codeproject.com/Articles/25719/Query-string-encryption-for-ASP-NET
使用randomly generated UUIDs (tokens)
幾乎將保證不會有可預測的序列
不能重播,即令牌只能一次性使用。一旦請求http://server.com/update?token=mxyzptlk,該關鍵值不應該是可重複使用的
不能以任何方式進行反向設計。與加密值不同的是,一旦加密值的來源材料或加密密鑰受到損害,這些加密值就會受到威脅UUID不可預測。 AFAIK,他們也不容易逆向工程。
他們是比較瑣碎生成和低處理開銷(取決於您的平臺反正)
你需要服務器端的訪問控制。 – SLaks 2013-04-22 14:56:26
請您詳細說明一下嗎?謝謝! – user2011931 2013-04-22 14:58:53
您的服務器需要檢查登錄用戶是否允許執行此操作。 https://en.wikipedia.org/wiki/Access_control – SLaks 2013-04-22 14:59:11