0
我正在考慮我的python web應用程序的安全實現。 例如,我有用戶和配置文件。提高拋出:SecurityException() - 每個用戶都可以通過在/資料/ USER_ID檢查修改對象的用戶安全性
發送POST在每次請求我可以獲取會話USER_ID並與profile.user_id比較,如果它們不相同的編輯他的個人資料。
但我也可以做另一種更常見的方式: 生成的每個配置文件
secret = hash(profile_data+secret_key)
和渲染AUTH。用戶鏈接是這樣的:
/profile/4?key=secret
所以想法是基於可編輯對象數據生成密鑰並在服務器端檢查此密鑰。如果用戶不知道密鑰,則無法獲取編輯其他配置文件的鏈接,因此無法修改它們。
這種保護方法如何調用? 與基於會話的user_id檢查比較有任何問題嗎? ?
如果您希望允許用戶修改其他用戶的配置文件,祕密方法可能奏效,請注意您應該瞭解一些安全攻擊以及如何防範它們(例如計時攻擊)。另一個問題是用戶體驗,如果用戶編輯他的個人資料,從而修改他的密鑰,所有先前的URL將失效,這將是很麻煩的。 此外,我不知道這是否僅僅是因爲它是一個例子,但要小心內置'哈希'函數,這是不criptographically安全。 –
鏈接invalidaion的問題可以通過僅生成散列僅對持久數據(如ID)...所以散列(id + secret)來解決,它是否不太安全,然後生成可變數據? – Evg
我只是沒有看到專業人士,你會得到更醜陋的URL,並且萬一祕密泄露,你必須更新所有用戶的URL。 –