台灣最大程式設計社群網站
線上人數
1256
 
會員總數:240651
討論主題:186517
歡迎您免費加入會員
討論區列表 >> office VBA / WinOS >> CryptographicException: 要解密的資料長度無效
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
CryptographicException: 要解密的資料長度無效
價值 : 500 QP  點閱數:6058 回應數:12

樓主

明心見性-呆呆喵
中級專家
3099 114
3353 953
發送站內信

捐贈 VP 給 呆呆喵
請教一下,有關IIS(有做多台負載平衡)和aspx WEB 與webconfig有相關經驗的人
前幾日發佈了一項aspx web資安訊息,於是乎我家把web.config依照寶哥blog所述做了相關修改
http://blog.miniasp.com/post/2010/09/19/Security-Hack-Exposes-Forms-Authentication-in-ASPNET.aspx
之前再前幾日,大約上星期五吧(9/30or10/1),windows有做自動更新

於是乎...我家的IIS log爆增....全部都是
http://www.XXXXXXX/XXXXXX/WebResource.axd?d=vCILvXMDY-AwB4A_FRKLlzpj5g4DvMBp3nncleO1KCs2ustd7V4n5rqjnysNJSNJUOHcE5SoNLLr9ORmvFxS3MOLmNo1&t=634217779857343750
System.Security.Cryptography.CryptographicException: 要解密的資料長度無效。

我google了很久,找不出原因,甚至查到是因為IE8的viewstate資料response回server時,不知道為何server總是少了前4K的資料

雖然頁面仍然可以正常瀏覽,但是整個web瀏覽速度變的很慢
請教是否有人有相關經驗...感謝...

搜尋相關Tags的文章: [ 要解密的資料長度無效 ] , [ IIS ] , [ WEB ] , [ web.config ] ,
本篇文章發表於2010-10-05 10:25
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

明心見性-呆呆喵
捐贈 VP 給 呆呆喵 檢舉此回應
這個也常見......System.Reflection.TargetInvocationException: 引動過程的目標傳回例外狀況。 ---> System.Web.HttpException: 無法驗證資料。
看起似乎都跟viewstate解密有關...
本篇文章回覆於2010-10-05 11:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

神來之筆
捐贈 VP 給 神來之筆 檢舉此回應
請檢查你LB後的web server, machine key是否都設相同:
當 ASP.NET 發生 Viewstate MAC 的驗證失敗 ( machineKey )
本篇文章回覆於2010-10-07 13:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

shinyo.her
捐贈 VP 給 shinyo.her 檢舉此回應
自動更新後之後要把你之前手動的部分改回來吧!!
或是自動更新的版本有沒有問題呢??
參考看看囉 :http://www.dotblogs.com.tw/shinyo.her/archive/2010/10/01/18019.aspx
本篇文章回覆於2010-10-09 18:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

明心見性-呆呆喵
捐贈 VP 給 呆呆喵 檢舉此回應
web裡所有的aspx都設為enableviewsateMac=false,之前除了保哥提的aspx WEB漏洞修改了web.config的customer error 導向error.aspx之外
但是改了這個安全性的web.config設定之後...error log爆增....
後來把這個設定拿掉,不導向error.aspx之後,log變少....但是實在是不明白這之間有什麼關聯

網頁一直都有viewstate 字串無效的錯誤,偶爾會有base-64 解密的資料長度無效的error log.....
唉....我都想不出來還要改什麼了...除了不得己的頁面要使用viewstate以外,能不用viewstate的頁面都設了enableViewstate=false了
web.config裡的 enableViewstateMac 也設成false....
為什麼仍然會出現這些錯誤...真是百思不得其解....
本篇文章回覆於2010-10-09 20:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

shinyo.her
捐贈 VP 給 shinyo.her 檢舉此回應
HEY~解鈴還需繫鈴人阿~~~我問了保哥!他給了以下回應:
如果會員之前已經登入會員過,如果在 Patch 之後沒有重新登入的話,所有舊的 .ASPXAUTH COOKIE 會引發這個錯誤,詳情可參考以下文章:http://weblogs.asp.net/scottgu/archive/2010/09/30/asp-net-security-fix-now-on-windows-update.aspx

你試試看吧,我也要來去研究一下了XD
本篇文章回覆於2010-10-10 23:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

明心見性-呆呆喵
捐贈 VP 給 呆呆喵 檢舉此回應
請問一下shinyo.her :Patch 是什麼意思呢?
本篇文章回覆於2010-10-11 13:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

shinyo.her
捐贈 VP 給 shinyo.her 檢舉此回應
Patch就是補丁阿~~!!
保哥的意思是你執行micrsoft的更新檔(補丁)之後~會員沒有重新登入你網站的話,所有舊的 .ASPXAUTH COOKIE 會引發你所問的那個錯誤!
希望對你有幫助,不知你的問題解決了沒??
本篇文章回覆於2010-10-12 00:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

明心見性-呆呆喵
捐贈 VP 給 呆呆喵 檢舉此回應
哦...是指有時候電腦右下角會出現小地球,提示要更新某元件的那個更新嗎....
不過,微軟並沒有天天在做更新檔(補丁),但是web上的log卻是天天有相同的錯誤訊息...
本篇文章回覆於2010-10-12 10:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

shinyo.her
捐贈 VP 給 shinyo.her 檢舉此回應
它所說的那個補丁指的是你說的這隻 →"之前再前幾日,大約上星期五吧(9/30or10/1),windows有做自動更新"
再貼給你看的文章裡有說明到這樣的錯誤發生的原因,你可以再點開來看看關於"Persistent Forms Authentication Cookie Behavior"的問題
解決方法之一是" just modify the <forms name=".ASPXAUTH"/> configuration section in your web.config file and switch to a different cookie name. "就是將你舊的 .ASPXAUTH COOKIE換掉,LOG的問題就不會有了
本篇文章回覆於2010-10-12 21:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

明心見性-呆呆喵
捐贈 VP 給 呆呆喵 檢舉此回應
會員重新登入網站?.......嗯..可是沒辦法要求公司的會員強制重新登入網站...更不可能改cookie名稱
公司好幾個web,有些個web裡甚至有將近100隻的aspx
因為沒辦法花時間明確的找出哪些aspx有使用cookie及使用的方式
雖然是有寫好一個共用的會員登入及認證cookie的dll檔去import
可是如果改到這個dll檔,影響的層面太廣...如果發生了什麼事,非我能力所極
暫時就讓log產生viewstate的訊息吧......

感謝神來之筆的回答,shinyo.her的熱心回覆...非常謝謝你︿︿...
本篇文章回覆於2010-10-14 09:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

shinyo.her
捐贈 VP 給 shinyo.her 檢舉此回應
不客氣,我想我的回覆妳沒有看清楚喔!!!
"just modify the <forms name=".ASPXAUTH"/> configuration section in your web.config file and switch to a different cookie name. "就是將你舊的 .ASPXAUTH COOKIE換掉,LOG的問題就不會有了 "
這是所謂的ASP.NET表單驗證,只需找web.config檔,不需要每個ASPX都去找,在你的config下應該會有類似這段:
<authentication mode="Windows">
<forms
name=".ASPXAUTH"
loginUrl="login.aspx"
defaultUrl="default.aspx"
protection="All"
timeout="30"
path="/"
requireSSL="false"
slidingExpiration="true"
cookieless="UseDeviceProfile" domain=""
enableCrossAppRedirects="false">
<credentials passwordFormat="SHA1" />
</forms>
<passport redirectUrl="internal" />
</authentication>

其中name=".ASPXAUTH" ,是預設的cookie name,你把它改成其他name如MyAuthenCookie即可解決你的問題了。
本篇文章回覆於2010-10-14 09:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

呆呆喵
捐贈 VP 給 呆呆喵 檢舉此回應
我web上的config沒有這一段耶...
<authentication mode="Windows">
<forms
name=".ASPXAUTH"
loginUrl="login.aspx"
defaultUrl="default.aspx"
protection="All"
timeout="30"
path="/"
requireSSL="false"
slidingExpiration="true"
cookieless="UseDeviceProfile" domain=""
enableCrossAppRedirects="false">
<credentials passwordFormat="SHA1" />
</forms>
<passport redirectUrl="internal" />
</authentication>

我想我們家 web的認證方式並沒有使用ASP.NET表單驗證,純粹就是自己aspx去import寫好的一個check類別
那個check類別裡有一些方法去確認client端的cookie值有沒有被寫進去
依此判斷會員是否有登入網站
並不是用ASP.NET表單驗證的方法來做驗證....
因為我們家web有些aspx需要會員登入後才能看得到,有些不需要.......總之...沒有上面那一段...
本篇文章回覆於2010-10-14 10:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.