ปรากฎว่าการเปลี่ยน mdb เป็น asp สามารถป้องกันการดาวน์โหลดได้นั้นเป็นเรื่องไร้สาระ ใช้ Flashget เพื่อทดสอบการดาวน์โหลดไฟล์ data.asp และบันทึกเป็นไฟล์ data.mdb ฉันพบว่าไฟล์ไม่เสียหายเมื่อเปิดด้วย ACCESS! 1. ใช้จินตนาการของคุณเพื่อแก้ไขชื่อไฟล์ฐานข้อมูล
อย่างไรก็ตาม หากผู้โจมตีได้รับเส้นทางไปยังฐานข้อมูลผ่านวิธีการของบริษัทอื่น เขาสามารถดาวน์โหลดฐานข้อมูลได้ ดังนั้นการรักษาความลับจึงเป็นอย่างน้อย
2. เปลี่ยนคำต่อท้ายชื่อฐานข้อมูลเป็น ASA, ASP ฯลฯ
วิธีนี้จะต้องรวมกับการตั้งค่าบางอย่าง มิฉะนั้นจะเกิดสถานการณ์ในตอนต้นของบทความนี้
(1) เพิ่มฟิลด์ไบนารีแล้ว
(2) เพิ่ม <% หรือ %> ลงในไฟล์นี้ IIS จะแยกวิเคราะห์ตามไวยากรณ์ ASP จากนั้นรายงานข้อผิดพลาด 500 ซึ่งโดยปกติแล้วจะไม่สามารถดาวน์โหลดได้ อย่างไรก็ตาม การเพิ่ม <% ลงในฟิลด์ข้อความหรือบันทึกช่วยจำของฐานข้อมูลนั้นไม่มีประโยชน์ เนื่องจาก ACCESS จะประมวลผลเนื้อหา และจะมีอยู่ในฐานข้อมูลเป็น <% ซึ่งไม่ถูกต้อง! วิธีที่ถูกต้องคือเก็บ <% ในช่องวัตถุ OLE เพื่อให้บรรลุวัตถุประสงค์ของเรา
ทำอย่างไร:
ขั้นแรก ให้ใช้แผ่นจดบันทึกเพื่อสร้างไฟล์ข้อความใหม่ที่มีเนื้อหา <% ตั้งชื่อแบบสุ่มแล้วบันทึก
จากนั้น ให้เปิดไฟล์ฐานข้อมูลของคุณด้วย Access สร้างตารางใหม่ ตั้งชื่อแบบสุ่ม เพิ่มเขตข้อมูลวัตถุ OLE ลงในตาราง จากนั้นเพิ่มบันทึก และแทรกไฟล์ข้อความที่สร้างขึ้นก่อนหน้านี้ หากทำอย่างถูกต้อง คุณควรจะสามารถทำได้ เพื่อดูบันทึกใหม่ชื่อ "Data Packet" เท่านั้น
3. เพิ่ม # ก่อนชื่อฐานข้อมูล
เพียงเพิ่ม # ไว้ที่ชื่อด้านหน้าของไฟล์ฐานข้อมูล จากนั้นแก้ไขที่อยู่ฐานข้อมูลในไฟล์การเชื่อมต่อฐานข้อมูล (เช่น conn.asp) หลักการคือเมื่อดาวน์โหลด จะจดจำได้เฉพาะส่วนที่อยู่ก่อนเครื่องหมาย # และส่วนต่อไปนี้จะถูกลบออกโดยอัตโนมัติ ตัวอย่างเช่น หากคุณต้องการดาวน์โหลด: http://www.pcdigest.com/date/#123 .mdb (สมมติว่ามีอยู่) ไม่ว่าจะเป็น IE หรือ FLASHGET สิ่งที่คุณได้รับคือ http://www.test.com/date/index.htm (index.asp, default.jsp ฯลฯ เอกสารหน้าแรกที่คุณตั้งค่าใน IIS)
นอกจากนี้ การรักษาช่องว่างบางส่วนในชื่อไฟล์ฐานข้อมูลยังมีบทบาทคล้ายกัน เนื่องจากลักษณะเฉพาะของโปรโตคอล HTTP สำหรับการแก้ไขที่อยู่ ช่องว่างจะถูกเข้ารหัสเป็น % เช่น http://www.test.com/date/ 123;456.mdb ดาวน์โหลดจาก http://www.test.com/date/123%456.mdb ไดเรกทอรีของเราไม่มีไฟล์ 123%456.mdb เลย ดังนั้นการดาวน์โหลดจึงไม่ถูกต้อง หลังจากการแก้ไขนี้ แม้ว่าคุณจะเปิดเผยที่อยู่ฐานข้อมูล โดยทั่วไปผู้อื่นจะไม่สามารถดาวน์โหลดได้!
4. เข้ารหัสฐานข้อมูล
ขั้นแรก เลือกเครื่องมือ -> ความปลอดภัย -> เข้ารหัส/ถอดรหัสฐานข้อมูล เลือกฐานข้อมูล (เช่น Employee.mdb) จากนั้นคลิก ตกลง จากนั้นหน้าต่างจะปรากฏขึ้นเพื่อบันทึกฐานข้อมูลหลังจากการเข้ารหัส และบันทึกเป็น: Employee1 เอ็มดีบี จากนั้น Employee.mdb จะถูกเข้ารหัสและบันทึกเป็น Employee1.mdb ควรสังเกตว่าการกระทำข้างต้นไม่ได้ตั้งรหัสผ่านสำหรับฐานข้อมูล แต่จะเข้ารหัสไฟล์ฐานข้อมูลเท่านั้น จุดประสงค์คือเพื่อป้องกันไม่ให้ผู้อื่นใช้เครื่องมืออื่น ๆ ดูเนื้อหาของไฟล์ฐานข้อมูล
ต่อไป เราเข้ารหัสฐานข้อมูล ขั้นแรก ให้เปิด Employee1.mdb ที่เข้ารหัสไว้ เมื่อเปิด ให้เลือกโหมดพิเศษ จากนั้นเลือกเครื่องมือ -> ความปลอดภัย -> ตั้งรหัสผ่านฐานข้อมูลจากเมนู จากนั้นป้อนรหัสผ่าน ด้วยวิธีนี้ แม้ว่าบุคคลอื่นจะได้รับไฟล์ Employee1.mdb เขาจะไม่สามารถดู Employee1.mdb ได้หากไม่มีรหัสผ่าน
หลังจากการเข้ารหัส คุณจะต้องแก้ไขหน้าการเชื่อมต่อฐานข้อมูล เช่น:
ไดรเวอร์ conn.open={ไดรเวอร์การเข้าถึง Microsoft (*.mdb)};uid=admin;pwd=รหัสผ่านฐานข้อมูล;dbq=เส้นทางฐานข้อมูล
หลังจากการแก้ไขนี้ แม้ว่าฐานข้อมูลจะถูกดาวน์โหลดแล้ว แต่ผู้อื่นก็ไม่สามารถเปิดได้ (โดยที่รหัสผ่านในหน้าการเชื่อมต่อฐานข้อมูลของคุณไม่รั่วไหล)
แต่เป็นที่น่าสังเกตว่าเนื่องจากกลไกการเข้ารหัสของฐานข้อมูล Access นั้นค่อนข้างง่าย แม้ว่าจะตั้งรหัสผ่านไว้ การถอดรหัสจึงเป็นเรื่องง่าย ระบบฐานข้อมูลจะสร้างสตริงที่เข้ารหัสโดยการ XOR รหัสผ่านที่ผู้ใช้ป้อนด้วยคีย์คงที่ และจัดเก็บไว้ในพื้นที่ของไฟล์ *.mdb โดยเริ่มจากที่อยู่ &H42 ดังนั้นโปรแกรมเมอร์ที่ดีจึงสามารถสร้างโปรแกรมขนาดเล็กที่มีบรรทัดหลายสิบบรรทัดเพื่อรับรหัสผ่านของฐานข้อมูล Access ได้อย่างง่ายดาย ดังนั้นตราบใดที่ฐานข้อมูลถูกดาวน์โหลด ความปลอดภัยของข้อมูลก็ยังไม่ทราบ
5. วางฐานข้อมูลไว้นอกไดเร็กทอรี WEB หรือวางไฟล์การเชื่อมต่อฐานข้อมูลในไดเร็กทอรีเสมือนอื่น ๆ
หากไดเร็กทอรี WEB ของคุณคือ e:/webroot คุณสามารถใส่ฐานข้อมูลในโฟลเดอร์ e:/data และแก้ไขที่อยู่การเชื่อมต่อฐานข้อมูลบนหน้าการเชื่อมต่อฐานข้อมูลใน e:/webroot เป็น: ../data/database name form, เพื่อให้เรียกฐานข้อมูลได้ตามปกติ แต่ไม่สามารถดาวน์โหลดได้เนื่องจากไม่อยู่ในไดเร็กทอรี WEB! โดยทั่วไปวิธีนี้ไม่เหมาะสำหรับผู้ใช้ที่ซื้อพื้นที่เสมือน
6. ใช้แหล่งข้อมูล ODBC
ในการเขียนโปรแกรมเช่น ASP คุณควรลองใช้แหล่งข้อมูล ODBC และอย่าเขียนชื่อฐานข้อมูลในโปรแกรม มิฉะนั้น ชื่อฐานข้อมูลจะหายไปพร้อมกับการรักษาความลับของซอร์สโค้ด ASP ตัวอย่างเช่น: DBPath = Server.MapPath(. ./123/abc/asfadf.mdb )
ไดรเวอร์ conn.open={ไดรเวอร์ Microsoft Access (*.mdb)};dbq=& DBPath
จะเห็นได้ว่าไม่ว่าชื่อฐานข้อมูลจะแปลกแค่ไหน ไม่ว่าไดเร็กทอรีที่ซ่อนอยู่จะลึกแค่ไหน หลังจากที่ซอร์สโค้ด ASP ถูกบุกรุก ก็สามารถดาวน์โหลดได้อย่างง่ายดาย หากคุณใช้แหล่งข้อมูล ODBC จะไม่มีปัญหาดังกล่าว: ชื่อ conn.open ODBC-DSN แต่จะน่ารำคาญกว่านี้ หากคุณย้ายไดเรกทอรี คุณต้องรีเซ็ตแหล่งข้อมูล สำหรับวิธีที่สะดวกยิ่งขึ้น โปรดดู บทที่ 7 8 วิธี!
7. เพิ่มการแมปขยายของชื่อฐานข้อมูล เช่น MDB
วิธีนี้ทำได้โดยการปรับเปลี่ยนการตั้งค่า IIS เหมาะสำหรับเพื่อนที่มีการควบคุม IIS แต่ไม่เหมาะสำหรับผู้ใช้ที่ซื้อโฮสต์เสมือน (เว้นแต่ผู้ดูแลระบบจะตั้งค่าไว้) ฉันคิดว่าวิธีนี้ดีที่สุดในปัจจุบัน ด้วยการเปลี่ยนแปลงเพียงครั้งเดียว ฐานข้อมูลทั้งหมดของเว็บไซต์ก็สามารถป้องกันไม่ให้ดาวน์โหลดได้ สามารถป้องกันการดาวน์โหลดได้แม้ว่าที่อยู่เป้าหมายจะถูกเปิดเผยโดยไม่ต้องแก้ไขโค้ดก็ตาม
เราเพิ่มการแยกวิเคราะห์แอปพลิเคชันของไฟล์ .mdb ใน IIS Properties---Home Directory---Configuration---Mapping---Application Extension โปรดทราบว่า DLL (หรือ EXE ฯลฯ) ที่เลือกไว้ที่นี่ดูเหมือนจะไม่เหมาะสม หากการเลือกนั้นไม่เหมาะสม คุณยังคงดาวน์โหลดไฟล์ MDB ได้ โปรดทราบว่าทางที่ดีที่สุดคืออย่าเลือก asp.dll เป็นต้น คุณสามารถทดสอบได้ด้วยตัวเอง
หลังจากการปรับเปลี่ยนนี้ ให้ดาวน์โหลดฐานข้อมูล เช่น: http://www.test.com/data/dvbbs6.mdb มันจะปรากฏขึ้น (ข้อผิดพลาดเช่น 404 หรือ 500)
8: ข้อดีของการใช้ .net
Mu Niao จาก Dongwang ได้เขียนเครื่องมือป้องกันฮอตลิงก์ WBAL เพื่อป้องกันการดาวน์โหลดไฟล์อย่างผิดกฎหมาย สำหรับรายละเอียด โปรดเข้าสู่ระบบที่ http://www.9seek.com/WBAL/;
อย่างไรก็ตาม สิ่งนั้นเพียงป้องกันการดาวน์โหลดที่ไม่ใช่ในเครื่องเท่านั้น และไม่มีฟังก์ชันป้องกันการดาวน์โหลดฐานข้อมูลอย่างแท้จริง อย่างไรก็ตาม วิธีนี้เกือบจะเหมือนกับวิธีที่ 5 คุณสามารถแก้ไขไฟล์ .NET เพื่อไม่ให้ดาวน์โหลดในเครื่องได้!
ในบรรดาวิธีการเหล่านี้ มีเพียงวิธีที่ 7 และ 8 เท่านั้นที่สามารถเปลี่ยนได้อย่างสม่ำเสมอ หลังจากแก้ไขการกำหนดค่าหนึ่งครั้ง ฐานข้อมูลของทั้งไซต์สามารถป้องกันไม่ให้ดาวน์โหลดได้ อีกหลายวิธีจำเป็นต้องแก้ไขชื่อฐานข้อมูลและไฟล์การเชื่อมต่อตามลำดับ ซึ่งก็คือ ลำบากกว่าแต่สำหรับเพื่อนโฮสต์เสมือนทำได้แค่นี้!
ที่จริงแล้ว วิธีที่หกควรเป็นส่วนขยายของวิธีที่ห้าซึ่งสามารถบรรลุฟังก์ชันพิเศษได้ อย่างไรก็ตาม สำหรับโฮสต์ที่ไม่รองรับ .net หรือกลัวการตั้งค่าที่ยุ่งยาก จะเป็นการดีกว่าถ้าใช้วิธีที่ห้าโดยตรง และ วิธีที่หกจะใช้เป็นค่าเริ่มต้น วิธีที่ 1 คุณยังคงสามารถเผยแพร่ได้โดยการคัดลอกและเชื่อมต่อกับฟอรัมหรือสมุดเยี่ยมชมของโฮสต์เดียวกัน จากนั้นคลิกเพื่อดาวน์โหลด (เนื่องจากหน้าอ้างอิงดังกล่าวมาจากโฮสต์เดียวกัน)
9. ใช้การตั้งค่าการอนุญาตไฟล์ของพาร์ติชัน NTFS (โดย percyboy)
เรารู้อยู่แล้วว่า ASP.NET ใช้ ADO.NET เพื่อเข้าถึงฐานข้อมูล และฐานข้อมูล Access ซึ่งเป็นหนึ่งในฐานข้อมูลระดับล่างที่ใช้กันทั่วไปของเรา - สามารถเข้าถึงได้ผ่านการเชื่อมต่อ OleDb บทความนี้กล่าวถึงพร้อมท์ข้อผิดพลาดหลายประการที่อาจพบเห็นได้ใน ASP.NET จะเห็นได้ว่าไฟล์ฐานข้อมูลที่สร้างโดย Access 2000 และ Access XP จะมีพร้อมท์ข้อผิดพลาดที่แตกต่างกันเมื่อเกิดข้อผิดพลาดในการเข้าถึง หวังว่ามันจะช่วยทุกคนได้ จุดสำคัญอีกประการหนึ่งคือฉันหวังว่าในบทความนี้ ทุกคนจะมีความเข้าใจใหม่เกี่ยวกับการตั้งค่าการอนุญาต NTFS ของไฟล์ฐานข้อมูล Access ใน ASP.NET