สิ่งนี้ถูกบล็อกในระดับเคอร์เนล IIS จากการทดสอบฉันดึงทุกโมดูลใน IIS ออกมาเพื่อที่จะไม่ได้มีตัวจัดการหน้าเว็บแบบสแตติกและยังคงแสดงข้อความแสดงข้อผิดพลาด 400 ข้อ
ฉันไม่เชื่อว่าเป็นไปได้ที่ IIS จะหลีกเลี่ยงปัญหานั้น การตั้งค่ารีจิสทรีที่คุณกล่าวถึงมีไว้สำหรับอักขระที่ จำกัด ประเภทอื่น ฉันไม่เห็นคันโยกที่จะเปลี่ยนฟังก์ชั่นนั้น
เป้าหมายของคุณคือการหลีกเลี่ยงสิ่งนั้น มันเปิดพื้นผิวการโจมตีของคุณให้กว้างขึ้นและฉันไม่สามารถจินตนาการได้ว่าผู้เยี่ยมชมที่แท้จริงกำลังหลงทางเนื่องจากการบล็อกลำดับการหลีกเลี่ยง URL ที่ไม่สมบูรณ์
Update2:
นี่คือลิงค์ยอดเยี่ยมสามลิงก์ ทั้ง Nazim Lala และ Wade Hilmo จากทีม IIS ได้บล็อกเกี่ยวกับเรื่องนี้เนื่องจากการอภิปรายรอบคำถามของคุณ Scott Hanselman ก็มีโพสต์ที่ยอดเยี่ยมในส่วนของการสืบค้นภายใน. NET:
อัปเดต:
ฉันตรวจสอบกับสมาชิกของทีม IIS เพื่อรับคำตอบที่มีสิทธิ์ เขากล่าวว่า% ถือเป็นตัวละครที่ไม่ปลอดภัยตาม RFC 1738 ( http://www.ietf.org/rfc/rfc1738.txt )
นี่คือข้อความที่เกี่ยวข้อง:
ที่ไม่ปลอดภัย:
ตัวละครอาจไม่ปลอดภัยด้วยเหตุผลหลายประการ อักขระช่องว่างไม่ปลอดภัยเนื่องจากช่องว่างที่สำคัญอาจหายไปและอาจมีช่องว่างที่ไม่สำคัญเมื่อมีการคัดลอก URL หรือเรียงพิมพ์หรืออยู่ภายใต้การดูแลของโปรแกรมประมวลผลคำ อักขระ "<" และ ">" ไม่ปลอดภัยเนื่องจากถูกใช้เป็นตัวคั่นรอบ ๆ URL เป็นข้อความอิสระ เครื่องหมายอัญประกาศ ("" ") ใช้เพื่อคั่น URL ในบางระบบอักขระ" # "ไม่ปลอดภัยและควรเข้ารหัสเสมอเนื่องจากมีการใช้ใน World Wide Web และในระบบอื่น ๆ เพื่อคั่น URL จากแฟรกเมนต์ / จุดยึด ตัวระบุที่อาจตามมา ตัวละคร "%" ไม่ปลอดภัยเพราะใช้สำหรับการเข้ารหัสอักขระอื่น อักขระอื่น ๆ ไม่ปลอดภัยเนื่องจากบางครั้งเกตเวย์และเอเจนต์การขนส่งอื่น ๆ บางครั้งอาจแก้ไขอักขระดังกล่าว อักขระเหล่านี้คือ "{", "}", "|", "\", "^", "~", "[", "]" และ "` "
อักขระที่ไม่ปลอดภัยทั้งหมดจะต้องถูกเข้ารหัสภายใน URL เสมอ ตัวอย่างเช่นตัวอักษร "#" จะต้องเข้ารหัสภายใน URL แม้ในระบบที่ปกติจะไม่จัดการกับตัวระบุส่วนหรือจุดยึดดังนั้นหากคัดลอก URL ไปยังระบบอื่นที่ใช้พวกเขาจะไม่จำเป็นต้องเปลี่ยน การเข้ารหัส URL
ดังนั้น IIS จะป้องกันสิ่งนี้ในระดับแกนกลางซึ่งเป็นมาตรการรักษาความปลอดภัยเชิงรุกเพื่อลดพื้นที่การโจมตี