อาการ
คอลัมน์URLและชื่อโฮสต์ปลายทางในล็อกเว็บพร็อกซีของ Microsoft Forefront คุกคาม 2010 เกตเวย์จัดการอาจถูกแสดงเป็นค่าที่ไม่สามารถอ่าน ปัญหานี้เกิดขึ้นเมื่อผู้ใช้เข้าถึงเว็บไซต์ โดยใช้ชื่อที่มีโดเมน internationalized (IDN) และรายการล็อกถูกเรียกจากดิสก์ หมายเหตุ IDNs มีชื่อโดเมนที่อาจประกอบด้วยอักขระแบบ Unicode และสามารถเข้าถึงได้ โดยใช้ Punycode transcription เกตเวย์การบริหารความเสี่ยงแปลงชื่อ Punycode เป็น Unicode แสดงเมื่อรายการล็อกที่ถูกแสดงในมุมมองบันทึกในการจัดการ TMG Forefront สแน็ปอินของ Microsoft Management Console (MMC) อย่างไรก็ตาม เมื่อรายการล็อกถูกดึงข้อมูลจากดิสก์ อักขระใด ๆ ที่ไม่ใช่ ASCII ในสายอักขระ Unicode จะถูกแทนที่ ด้วยเครื่องหมายคำถาม (?), ในขณะที่เราอธิบายในส่วน "สาเหตุ"
สาเหตุ
ปัญหานี้เกิดขึ้นเนื่อง จากคอลัมน์บันทึกในเกตเวย์จัดการความเสี่ยงที่จะถูกบันทึกในรูปแบบ ASCII และ เมื่อระเบียนแฟ้มบันทึกจะถูกเขียนลงดิสก์ ค่าในURLและคอลัมน์ชื่อโฮสต์ปลายทางจะถูกแปลงจาก Unicode เป็น ASCII ซึ่งทำให้ค่าใด ๆ ที่ไม่ใช่ ASCII ในค่าที่จะถูกแทนที่ ด้วยเครื่องหมายคำถาม (?)
การแก้ไข
เมื่อต้องการแก้ไขปัญหานี้ ติดตั้งค่าสะสม 4สำหรับ Forefront คามจัดการเกตเวย์ 2010 Service Pack 2 และจากนั้น เรียกใช้สคริปต์ในส่วน "ข้อมูลเพิ่มเติม"
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
ข้อมูลเพิ่มเติม
คัดลอก และวางสคริปต์ต่อไปนี้ใน Notepad.exe และจากนั้น บันทึกแฟ้มเป็น "SetPersistLogAsPunycode.vbs"
'Define the constants needed.Const strVpsGUID = "{143F5698-103B-12D4-FF34-1F34767DEABC}"Const strVpsPropertyName = "PersistLogAsPunycode"Const Error_FileNotFound = &H80070002Set objArgs = wscript.ArgumentsfInvalidParameterValue = Falseif objArgs.Count > 0 then if objArgs(0) = "0" then fPersistLogAsPunycode = False elseif objArgs(0) = "1" then fPersistLogAsPunycode = True else fInvalidParameterValue = True end ifend ifif objArgs.Count <> 1 or fInvalidParameterValue then wscript.echo "Usage: SetPersistLogAsPunycode.vbs <0|1>" wscript.echo wscript.echo "Control how log fields that may contain punycode-encoded parts are" wscript.echo "stored in the persistent log." wscript.echo wscript.echo " 0 - Persist the applicable log fields as ASCII (the default behavior)" wscript.echo " 1 - Persist the applicable log fields as Punycode" wscript.Quit 2end ifset objLogging = CreateObject("FPC.Root").GetContainingArray().LoggingSet objVPSet = OpenVPSet(objLogging, strVpsGUID)objVPSet.Value(strVpsPropertyName) = fPersistLogAsPunycodeobjLogging.Savefunction OpenVPSet(objParent, strVpsGUID) Set objVPSets = objParent.VendorParametersSets On Error Resume Next Set OpenVPSet = objVPSets.Item(strVpsGUID) ' Save the Err properties in case it needs to be re-raised errNumber = Err.Number errSource = Err.Source errDescription = Err.Description errHelpFile = Err.HelpFile errHelpContext = Err.HelpContext On Error GoTo 0 if errNumber = Error_FileNotFound Then Set OpenVPSet = objVPSets.Add(strVpsGUID) Elseif errNumber < 0 Then ' An error other than "file not found" occured -- re-raise the error, ' this time not under "On Error Resume Next" Err.Raise errNumber, errSource, errDescription, errHelpFile, errHelpContext End Ifend function
เมื่อต้องการเปิดใช้งานคุกคามเกตเวย์การจัดการสามารถยืนยันรายการล็อกที่เป็นค่า Punycode รันคำสั่งต่อไปนี้:
cscript.exe SetPersistLogAsPunycode.vbs 1เมื่อต้องการแปลงกลับเป็นเกตเวย์จัดการความเสี่ยงลักษณะการทำงานเริ่มต้นของเขตข้อมูลที่บันทึกเป็นอักขระ ASCII เรียกใช้คำสั่งต่อไปนี้:
cscript.exe SetPersistLogAsPunycode.vbs 0
อ้างอิง
ดูคำศัพท์เฉพาะทางMicrosoft ใช้เพื่ออธิบายปรับปรุงซอฟต์แวร์