เพื่อนๆ หลายคนเคยประสบปัญหามากมายเมื่อใช้ IIS6 ในการสร้างเว็บไซต์ ในอดีตเราพบปัญหาเหล่านี้บางส่วน และบางส่วนเป็นปัญหาใหม่ หลังจากการทดลองหลายครั้ง เมื่อรวมกับประสบการณ์ในการแก้ไขปัญหาก่อนหน้านี้ เราจึงได้ข้อสรุปนี้ สามารถช่วยทุกคนได้
ตัวอย่างอาการ:
Server.MapPath() error'ASP 0175: 80004005'
ไม่อนุญาตให้ใช้อักขระพาธ
/0709/dqyllhsub/news/OpenDatabase.asp บรรทัด 4
ไม่อนุญาตให้ใช้อักขระ '..' ในพารามิเตอร์ MapPath Path
การวิเคราะห์เหตุผล:
เว็บเพจจำนวนมากใช้คำสั่งเช่น ../ รูปแบบ (นั่นคือ กลับไปยังเพจก่อนหน้า นั่นคือ เส้นทางหลัก) อย่างไรก็ตาม ด้วยเหตุผลด้านความปลอดภัยใน IIS6.0 ตัวเลือกนี้จะถูกปิดตามค่าเริ่มต้น
สารละลาย:
ในคุณสมบัติ IIS->โฮมไดเร็กทอรี->การกำหนดค่า->ตัวเลือก ทำเครื่องหมายที่ช่องถัดจาก "เปิดใช้งานเส้นทางหลัก" ยืนยันการรีเฟรช
ตัวอย่างอาการ:
HTTP Error 404 - ไม่พบไฟล์หรือไดเรกทอรี
การวิเคราะห์เหตุผล:
ใน IIS6.0 มีตัวเลือกใหม่ของส่วนขยายโปรแกรมเว็บ ซึ่งคุณสามารถอนุญาตหรือปิดใช้งานโปรแกรมต่างๆ เช่น ASP, ASP.NET, CGI, IDC ฯลฯ ตามค่าเริ่มต้น ASP และโปรแกรมอื่น ๆ เป็นสิ่งต้องห้าม
สารละลาย:
เลือก Active Server Pages ในส่วนขยายบริการเว็บใน IIS และคลิก "อนุญาต"
ตัวอย่างอาการ:
HTTP Error 401.2 - ไม่ได้รับอนุญาต: การเข้าถึงถูกปฏิเสธเนื่องจากการกำหนดค่าเซิร์ฟเวอร์
การวิเคราะห์เหตุผล:
IIS รองรับวิธีการรับรองความถูกต้องของเว็บต่อไปนี้:
(1) การรับรองความถูกต้องโดยไม่ระบุชื่อ
IIS สร้างบัญชี IUSR_computername (โดยที่ชื่อคอมพิวเตอร์เป็นชื่อของเซิร์ฟเวอร์ที่ IIS กำลังทำงานอยู่) เพื่อรับรองความถูกต้องของผู้ใช้ที่ไม่ระบุชื่อเมื่อพวกเขาร้องขอเนื้อหาเว็บ บัญชีนี้ให้สิทธิ์การเข้าสู่ระบบภายในแก่ผู้ใช้ คุณสามารถรีเซ็ตการเข้าถึงของผู้ใช้ที่ไม่ระบุชื่อเพื่อใช้บัญชี Windows ที่ถูกต้องได้
(2) การรับรองความถูกต้องขั้นพื้นฐาน
ใช้การรับรองความถูกต้องพื้นฐานเพื่อจำกัดการเข้าถึงไฟล์บนเว็บเซิร์ฟเวอร์ที่มีรูปแบบ NTFS ด้วยการรับรองความถูกต้องขั้นพื้นฐาน ผู้ใช้จะต้องป้อนข้อมูลประจำตัว และการเข้าถึงจะขึ้นอยู่กับ ID ผู้ใช้ ID ผู้ใช้และรหัสผ่านจะถูกส่งผ่านเครือข่ายในรูปแบบข้อความที่ชัดเจน
(3) การรับรองความถูกต้องแบบรวมของ Windows
Windows Integrated Authentication มีความปลอดภัยมากกว่า Basic Authentication และทำงานได้ดีในสภาพแวดล้อมอินทราเน็ตที่ผู้ใช้มีบัญชีโดเมน Windows ในการรับรองความถูกต้องของ Windows แบบรวม เบราว์เซอร์จะพยายามใช้ข้อมูลรับรองที่ผู้ใช้ปัจจุบันใช้ในระหว่างกระบวนการเข้าสู่ระบบโดเมน และหากความพยายามล้มเหลว ผู้ใช้จะได้รับแจ้งให้ระบุชื่อผู้ใช้และรหัสผ่าน หากคุณใช้ Integrated Windows Authentication รหัสผ่านของผู้ใช้จะไม่ถูกส่งไปยังเซิร์ฟเวอร์ หากผู้ใช้เข้าสู่ระบบคอมพิวเตอร์เฉพาะที่ในฐานะผู้ใช้โดเมน เขาไม่จำเป็นต้องรับรองความถูกต้องอีกครั้งเมื่อเข้าถึงคอมพิวเตอร์เครือข่ายในโดเมนนี้
(4) การรับรองความถูกต้องแบบแยกย่อย
การรับรองความถูกต้องแบบแยกส่วนจะเอาชนะข้อเสียหลายประการของการรับรองความถูกต้องขั้นพื้นฐาน เมื่อใช้การรับรองความถูกต้องแบบแยกย่อย รหัสผ่านจะไม่ถูกส่งในรูปแบบข้อความที่ชัดเจน หรือคุณสามารถใช้ Digest Authentication ผ่านพร็อกซีเซิร์ฟเวอร์ได้ การรับรองความถูกต้องแบบแยกส่วนใช้กลไกการท้าทาย/การตอบสนอง (กลไกเดียวกับที่ใช้โดย Integrated Windows Authentication) โดยที่รหัสผ่านจะถูกส่งในรูปแบบที่เข้ารหัส
Microsoft .NET Passport เป็นบริการตรวจสอบสิทธิ์ผู้ใช้ที่อนุญาตการรักษาความปลอดภัยการลงชื่อเข้าระบบครั้งเดียว เพื่อให้ผู้ใช้มีความปลอดภัยมากขึ้นเมื่อเข้าถึงเว็บไซต์และบริการที่เปิดใช้งาน .NET Passport ไซต์ที่เปิดใช้งาน .NET Passport อาศัยเซิร์ฟเวอร์กลาง .NET Passport ในการตรวจสอบผู้ใช้ อย่างไรก็ตาม เซิร์ฟเวอร์กลางไม่ได้อนุญาตหรือปฏิเสธการเข้าถึงผู้ใช้เฉพาะไปยังไซต์ที่เปิดใช้งาน .NET Passport แต่ละไซต์
สารละลาย:
กำหนดค่าวิธีการรับรองความถูกต้องต่างๆ ตามต้องการ (โดยทั่วไปคือการรับรองความถูกต้องแบบไม่ระบุชื่อ ซึ่งเป็นวิธีการรับรองความถูกต้องที่ใช้โดยไซต์ส่วนใหญ่) ตัวเลือกการรับรองความถูกต้องได้รับการกำหนดค่าภายใต้คุณสมบัติ IIS->ความปลอดภัย->การรับรองความถูกต้องและการควบคุมการเข้าถึง
ตัวอย่างอาการ:
HTTP Error 403.6 - ห้าม: ที่อยู่ IP ของลูกค้าถูกปฏิเสธ
การวิเคราะห์เหตุผล:
IIS มีกลไกการจำกัด IP คุณสามารถกำหนดค่าให้จำกัด IP บางอย่างไม่ให้เข้าถึงไซต์ หรือจำกัดเฉพาะ IP บางตัวไม่ให้เข้าถึงไซต์ได้ หากไคลเอนต์อยู่ในช่วง IP ที่คุณบล็อกหรือไม่ได้รับอนุญาตจากคุณภายใน ช่วงจะมีข้อความแสดงข้อผิดพลาดปรากฏขึ้น
สารละลาย:
ไปที่คุณสมบัติ IIS -> ความปลอดภัย -> ข้อ จำกัด ที่อยู่ IP และชื่อโดเมน หากคุณต้องการจำกัดการเข้าถึงที่อยู่ IP บางแห่ง คุณต้องเลือกการเข้าถึงที่ได้รับอนุญาต คลิกเพิ่ม เพื่อเลือกที่อยู่ IP ที่ไม่ได้รับอนุญาต ในทางตรงกันข้าม คุณสามารถอนุญาตการเข้าถึงจากที่อยู่ IP บางแห่งเท่านั้น
ตัวอย่างอาการ:
HTTP Error 401.1 - ไม่ได้รับอนุญาต: การเข้าถึงถูกปฏิเสธเนื่องจากข้อมูลรับรองไม่ถูกต้อง
การวิเคราะห์เหตุผล:
เนื่องจากบัญชีที่ผู้ใช้ใช้สำหรับการเข้าถึงแบบไม่ระบุชื่อคือชื่อ IUSR_machine หากบัญชีนี้ถูกปิดใช้งาน ผู้ใช้จะไม่สามารถเข้าถึงได้
สารละลาย:
แผงควบคุม -> เครื่องมือการดูแลระบบ -> การจัดการคอมพิวเตอร์ -> ผู้ใช้และกลุ่มภายใน เปิดใช้งานบัญชีชื่อเครื่อง IUSR
ตัวอย่างอาการ:
HTTP Error 401.3 - ไม่ได้รับอนุญาต: การเข้าถึงถูกปฏิเสธเนื่องจาก ACL ตั้งค่าไว้บนทรัพยากรที่ร้องขอ
การวิเคราะห์เหตุผล:
ผู้ใช้เว็บไคลเอ็นต์อยู่ในกลุ่มผู้ใช้ ดังนั้น หากสิทธิ์ NTFS ของไฟล์ไม่เพียงพอ (เช่น ไม่มีสิทธิ์ในการอ่าน) หน้าจะไม่สามารถเข้าถึงได้
สารละลาย:
ไปที่แท็บความปลอดภัยของโฟลเดอร์และกำหนดค่าสิทธิ์ของผู้ใช้ อย่างน้อยก็ให้สิทธิ์ในการอ่าน การตั้งค่าสิทธิ์ NTFS จะไม่อธิบายไว้ที่นี่
ตัวอย่างอาการ:
HTTP 500 - ข้อผิดพลาดเซิร์ฟเวอร์ภายใน
การวิเคราะห์เหตุผล:
บัญชี IWAM เป็นบัญชีในตัวที่ระบบสร้างขึ้นโดยอัตโนมัติเมื่อติดตั้ง IIS หลังจากสร้างบัญชี IWAM แล้ว จะมีการใช้งานร่วมกันโดย Active Directory ฐานข้อมูล IIS metabase และแอปพลิเคชัน COM+ รหัสผ่านของบัญชีจะถูกบันทึกโดยบุคคลที่สามตามลำดับ และระบบปฏิบัติการจะรับผิดชอบในการซิงโครไนซ์รหัสผ่าน IWAM ที่บันทึกไว้โดยทั้งสามฝ่าย ฝ่าย การซิงโครไนซ์รหัสผ่านของระบบสำหรับบัญชี IWAM บางครั้งล้มเหลว ส่งผลให้รหัสผ่านไม่สอดคล้องกันสำหรับบัญชี IWAM
สารละลาย:
หากมี AD ให้เลือก Start->Programs->Administrative Tools->Active Directory Users and Computers ตั้งรหัสผ่านสำหรับบัญชี IWAM เรียกใช้ c:InetpubAdminScripts>adsutil SET w3svc/WAMUserPass + รหัสผ่านเพื่อซิงโครไนซ์รหัสผ่านฐานข้อมูล IIS metabase เรียกใช้ cscript c:inetpubadminscriptssynciwam.vbs -v เพื่อซิงโครไนซ์รหัสผ่านของบัญชี IWAM ในแอปพลิเคชัน COM+
คำถามที่ 8: ปัญหาการตั้งค่า MIME ทำให้ไม่สามารถดาวน์โหลดไฟล์บางประเภทได้ (ใช้ ISO เป็นตัวอย่าง)
ตัวอย่างอาการ:
HTTP Error 404 - ไม่พบไฟล์หรือไดเรกทอรี
การวิเคราะห์เหตุผล:
IIS6.0 ยกเลิกการรองรับ MIME บางประเภท เช่น ISO ทำให้เกิดข้อผิดพลาดในการดาวน์โหลดไคลเอนต์
สารละลาย:
ในคุณสมบัติ IIS->ส่วนหัว HTTP->ประเภท MIME->ใหม่ ในกล่องโต้ตอบถัดไป กรอกนามสกุลเป็น .ISO และประเภท MIME เป็นแอปพลิเคชัน
นอกจากนี้ การบล็อกไฟร์วอลล์ ข้อผิดพลาดในการกำหนดค่า ODBC ข้อจำกัดด้านประสิทธิภาพของเว็บเซิร์ฟเวอร์ ข้อจำกัดของเธรด และปัจจัยอื่นๆ ยังเป็นสาเหตุที่เป็นไปได้ที่ทำให้เซิร์ฟเวอร์ IIS ไม่สามารถเข้าถึงได้ ซึ่งจะไม่มีการกล่าวถึงทีละข้อที่นี่