0
我在.NET 4.0範例中,並且我注意到了一個場景。我的API使用FormsAuthentication.Encrypt
方法爲用戶創建一個令牌。問題是,如果我在本地主機上運行API,請調用API獲取密鑰,然後在對服務器的後續請求中使用相同的密鑰。這是爲什麼發生?這是所需的行爲?這不是安全風險嗎?服務器能夠解密在本地系統上生成的表單身份驗證密鑰
我在.NET 4.0範例中,並且我注意到了一個場景。我的API使用FormsAuthentication.Encrypt
方法爲用戶創建一個令牌。問題是,如果我在本地主機上運行API,請調用API獲取密鑰,然後在對服務器的後續請求中使用相同的密鑰。這是爲什麼發生?這是所需的行爲?這不是安全風險嗎?服務器能夠解密在本地系統上生成的表單身份驗證密鑰
問題是我們在應用程序web.config中覆蓋了machineKey
值。所以這兩個應用程序(在本地機器和服務器上運行)都使用相同的密鑰進行加密和解密。因此,服務器可以解密本地機器加密的密鑰,反之亦然。
你能澄清你的意思嗎?「可以在隨後的服務器請求中使用相同的密鑰?」你指的是哪個關鍵? – Levi
在API用戶傳遞他的u/p和API返回一個關鍵。這將識別他。我創建一張表單,對其進行加密並將其用作用戶必須隨每個後續請求轉發的密鑰。我相信如果表單身份驗證在這種方法下是安全的,那麼它也應該可以安全地使用API。 –
FormsAuthentication.Encrypt返回一個字符串,然後您可以將其傳遞給FormsAuthentication.Decrypt,它將返回用於生成加密字符串的原始FormsAuthenticationToken。您可以在同一個加密字符串上多次調用Decrypt方法,並且它應該每次都返回相同的原始FormsAuthenticationTicket。 – Levi