דלג לתוכן הראשי
היכנס דרך Microsoft
היכנס או צור חשבון.
שלום,
בחר חשבון אחר.
יש לך חשבונות מרובים
בחר את החשבון שברצונך להיכנס באמצעותו.

תקציר

עדכון אבטחה MS11-100 של Microsoft מגביל את המספר המרבי של מפתחות צורה, קבצים וחברי JSON ל- 1000 בבקשת HTTP. עקב שינוי זה, יישומי ASP.NET דוחים בקשות שיש בהן יותר מ- 1000 מרכיבים אלה. לקוחות HTTP שמבצעים בקשות כאלה יידחו, והודעת שגיאה תופיע בדפדפן האינטרנט. הודעה השגיאה תכלול בדרך כלל קוד מצב HTTP 500. ניתן לקבוע את התצורה של מגבלה זו לפי היישום. עיין בסעיף "פתרון" לקבלת הוראות לקביעת תצורה.


מאפייני הבעיה

בקשות ASP.NET עם הרבה מפתחות צורה, קבצים או מטעני JSON מקבלים תגובת שגיאה מהשרת. ליומן הרישום 'יישום' בשרת יש ערך 'אזהרה' עם מקור שהוא גירסה ספציפית של ASP.NET, ומזהה אירוע של 1309. יומן האירועים מכיל אחת מההודעות הבאות:


הודעה 1:

פרטי יישום:
תחום יישום: /LM/W3SVC/1/ROOT/<App Domain>
רמת אמון: בינונית
נתיב וירטואלי של היישום: <VDIR Path>
נתיב יישום: <App Path>
שם מחשב: <שם מחשב>
פרטי תהליך:
מזהה תהליך: 0001
שם תהליך: w3wp.exe
שם חשבון: IIS APPPOOL\DefaultAppPool

פרטי חריגה:
סוג חריגה: HttpException
הודעה על חריגה: נתוני צורה בקידוד URL אינם חוקיים.
at System.Web.HttpRequest.FillInFormCollection()
at System.Web.HttpRequest.get_Form()
at System.Web.HttpRequest.get_HasForm()
at System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
at System.Web.UI.Page.DeterminePostBackMode()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


הודעה 2:

פרטי יישום:
תחום יישום: /LM/W3SVC/1/ROOT/<App Domain>
רמת אמון: בינונית
נתיב וירטואלי של היישום: <VDIR Path>
נתיב יישום: <App Path>
שם מחשב: <שם מחשב>

פרטי תהליך:
מזהה תהליך: 0001
שם תהליך: w3wp.exe
שם חשבון: IIS APPPOOL\DefaultAppPool

פרטי חריגה:
סוג חריגה: InvalidOperationException
הודעה על חריגה: הפעולה אינה חוקית עקב המצב הנוכחי של האובייקט.
at System.Web.HttpRequest.FillInFilesCollection()
at System.Web.HttpRequest.get_Files()
at FileUpload.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint


הודעה 3:

פרטי יישום:
תחום יישום: /LM/W3SVC/1/ROOT/<App Domain>
רמת אמון: בינונית
נתיב וירטואלי של היישום: <VDIR Path>
נתיב יישום: <App Path>
שם מחשב: <שם מחשב>

פרטי תהליך:
מזהה תהליך: 0001
שם תהליך: w3wp.exe
שם חשבון: IIS APPPOOL\DefaultAppPool

פרטי חריגה:
סוג חריגה: InvalidOperationException
הודעה על חריגה: הפעולה אינה חוקית עקב המצב הנוכחי של האובייקט.
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
at System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)
at Failing.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)



קובץ יומן הרישום של IIS מציג ערך שדומה לערך הבא:

2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187




סיבה

עדכון האבטחה של Microsoft שעלון האבטחה MS11-100 עוסק בו משנה את מספר המקסימום שנקבע כברירת מחדל של מפתחות צורה, קבצים וחברי JSON ש- ASP.NET יקבל בבקשה ל- 1,000. שינוי זה בוצע כדי לטפל בפגיעות של מניעת שירות שעלון האבטחה MS11-100 של Microsoft מתעד.


פתרון הבעיה

יישום המגיעים למגבלה זו עבור מפתחות צורה או קבצים יכולים לשנות את ASP.NET appSetting aspnet:MaxHttpCollectionKeys, כמוצג להלן בקובץ התצורה של יישום ASP.NET. הגדרה זו מטפלת בהודעת השגיאה 1 והודעת השגיאה 2 מהסעיף "מאפייני הבעיה".

<configuration>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="1000" />
</appSettings>
</configuration>



הערה אם אתה משתמש ב- ASP.NET 1.1 במערכת המבוססת על x86, ההגדרה מותאמת על-ידי הוספת ערך DWORD למפתח הרישום הבא:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys

אם אתה משתמש ב- ASP.NET 1.1 במערכת המבוססת על x64, ההגדרה מותאמת על-ידי הוספת ערך DWORD למפתח הרישום הבא:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys




יישום המגיעים למגבלה זו עבור עומסי JSON יכולים לשנות את ASP.NET appSetting aspnet:MaxJsonDeserializerMembers, כמוצג להלן בקובץ התצורה של יישום ASP.NET. הגדרה זו מטפלת בהודעת השגיאה 3 מהסעיף "מאפייני הבעיה".

<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>




הערה הגדלת ערך זו מעל להגדרת ברירת המחדל מגדילה את פגיעות השרת לפגיעות מסוג 'מניעת שירות' שנידונה בעלון האבטחה MS11-100.


מידע נוסף

לקבלת מידע נוסף על עלון האבטחה MS11-100, עיין במאמר TechNet הבא:

עלון האבטחה MS11-100 של Microsoft - קריטי לקבלת מידע נוסף, לחץ על מספר המאמר שלהלן כדי להציגו מתוך מאגר הידע Microsoft Knowledge Base:

2638420 MS11-100: פגיעות ב-.NET Framework עלולה לאפשר העלאת רמת הרשאות: 29.12.11

זקוק לעזרה נוספת?

מעוניין באפשרויות נוספות?

גלה את יתרונות המנוי, עיין בקורסי הדרכה, למד כיצד לאבטח את המכשיר שלך ועוד.

קהילות עוזרות לך לשאול שאלות ולהשיב עליהן, לתת משוב ולשמוע ממומחים בעלי ידע עשיר.

האם מידע זה היה שימושי?

עד כמה אתם מרוצים מאיכות השפה?
מה השפיע על החוויה שלך?
בלחיצה על 'שלח', אתה מאפשר למשוב שלך לשפר מוצרים ושירותים של Microsoft. מנהל ה-IT שלך יוכל לאסוף נתונים אלה. הצהרת הפרטיות.

תודה על המשוב!

×