จะป้องกันการโจมตีของแฮกเกอร์ได้ดีขึ้นได้อย่างไร ฉันขอแสดงความเห็นส่วนตัว! ประการแรก ไม่ควรใช้โปรแกรมฟรีฟรี เนื่องจากคุณสามารถแชร์โค้ดต้นฉบับได้ ผู้โจมตีจึงสามารถวิเคราะห์โค้ดได้เช่นกัน หากคุณใส่ใจในรายละเอียด ความปลอดภัยของเว็บไซต์ของคุณจะดีขึ้นอย่างมาก แม้ว่าจะมีช่องโหว่เช่น SQL Injection เกิดขึ้น ก็เป็นไปไม่ได้ที่ผู้โจมตีจะลบไซต์ของคุณทันที
เนื่องจากความสะดวกและง่ายต่อการใช้งานของ ASP โปรแกรมพื้นหลังของเว็บไซต์จึงใช้ภาษาสคริปต์ ASP มากขึ้นเรื่อยๆ อย่างไรก็ตาม เนื่องจาก ASP เองก็มีช่องโหว่ด้านความปลอดภัย แฮกเกอร์จึงอาจใช้ประโยชน์จากมันได้หากไม่ระวัง ในความเป็นจริง การรักษาความปลอดภัยไม่ได้เป็นเพียงเรื่องของผู้ดูแลระบบเครือข่ายเท่านั้น แต่โปรแกรมเมอร์ยังต้องใส่ใจกับรายละเอียดด้านความปลอดภัยบางอย่าง และพัฒนาพฤติกรรมการรักษาความปลอดภัยที่ดี ไม่เช่นนั้นจะนำมาซึ่งความเสี่ยงด้านความปลอดภัยอย่างใหญ่หลวงมาสู่เว็บไซต์ของพวกเขา ปัจจุบันโปรแกรม ASP ส่วนใหญ่บนเว็บไซต์มีช่องโหว่ด้านความปลอดภัยไม่ทางใดก็ทางหนึ่ง แต่ถ้าคุณใส่ใจเมื่อเขียนโปรแกรม ก็ยังสามารถหลีกเลี่ยงได้
1. ชื่อผู้ใช้และรหัสผ่านถูกถอดรหัส
หลักการโจมตี: ชื่อผู้ใช้และรหัสผ่านมักเป็นสิ่งที่แฮกเกอร์สนใจมากที่สุด หากพบซอร์สโค้ดในทางใดทางหนึ่ง ผลที่ตามมาจะร้ายแรง
ทักษะการป้องกัน: โปรแกรมที่เกี่ยวข้องกับชื่อผู้ใช้และรหัสผ่านจะถูกห่อหุ้มไว้ดีที่สุดบนฝั่งเซิร์ฟเวอร์ และปรากฏในไฟล์ ASP ให้น้อยที่สุดเท่าที่จะทำได้ ชื่อผู้ใช้และรหัสผ่านที่ปรากฏบ่อยครั้งสามารถเขียนลงในไฟล์รวมที่ซ่อนอยู่ได้ หากเกี่ยวข้องกับการเชื่อมต่อกับฐานข้อมูล ควรให้สิทธิ์แก่ผู้ดำเนินการขั้นตอนการจัดเก็บเท่านั้น อย่าให้สิทธิ์ผู้ใช้โดยตรงในการแก้ไข แทรก หรือลบบันทึก
2. หลักการโจมตีข้ามการตรวจสอบ
: โปรแกรม ASP ส่วนใหญ่ที่ต้องได้รับการตรวจสอบในขณะนี้จะเพิ่มคำแถลงการตัดสินที่ส่วนหัวของหน้า แต่ยังไม่เพียงพอ แฮกเกอร์สามารถข้ามการตรวจสอบและเข้าสู่โดยตรงได้
ทักษะในการป้องกัน: หน้า ASP ที่ต้องตรวจสอบสามารถติดตามชื่อไฟล์ของหน้าก่อนหน้าได้ เฉพาะเซสชันที่ถ่ายโอนจากหน้าก่อนหน้าเท่านั้นที่สามารถอ่านหน้านี้ได้
3. ปัญหาไฟล์ Inc รั่วไหล
หลักการโจมตี: เมื่อมีการสร้างหน้าแรกที่มี ASP และไม่ได้รับการสรุปก่อนที่จะทำการดีบั๊ก เครื่องมือค้นหาบางตัวสามารถเพิ่มเป็นออบเจ็กต์การค้นหาได้โดยอัตโนมัติ หากใครใช้เครื่องมือค้นหาเพื่อค้นหาหน้าเว็บเหล่านี้ในเวลานี้ พวกเขาจะได้รับตำแหน่งของไฟล์ที่เกี่ยวข้องและสามารถดูรายละเอียดของตำแหน่งและโครงสร้างฐานข้อมูลในเบราว์เซอร์ได้ จึงเผยให้เห็นซอร์สโค้ดที่สมบูรณ์
เคล็ดลับการป้องกัน: โปรแกรมเมอร์ควรตรวจแก้จุดบกพร่องหน้าเว็บอย่างละเอียดก่อนที่จะเผยแพร่ ผู้เชี่ยวชาญด้านความปลอดภัยจำเป็นต้องทำให้ไฟล์ ASP แข็งขึ้น เพื่อไม่ให้ผู้ใช้ภายนอกมองเห็นได้ ขั้นแรก เข้ารหัสเนื้อหาของไฟล์ .inc ประการที่สอง คุณยังสามารถใช้ไฟล์ .asp แทนไฟล์ .inc เพื่อให้ผู้ใช้ไม่สามารถดูซอร์สโค้ดของไฟล์จากเบราว์เซอร์ได้โดยตรง ชื่อไฟล์ของไฟล์ inc ไม่ควรใช้ค่าเริ่มต้นของระบบหรือชื่อที่มีความหมายพิเศษที่ผู้ใช้คาดเดาได้ง่าย ลองใช้ตัวอักษรภาษาอังกฤษที่ผิดปกติ
4. หลักการโจมตีการดาวน์โหลดสำรองข้อมูลอัตโนมัติ
: ในเครื่องมือบางอย่างสำหรับการแก้ไขโปรแกรม ASP เมื่อสร้างหรือแก้ไขไฟล์ ASP ตัวแก้ไขจะสร้างไฟล์สำรองโดยอัตโนมัติ ตัวอย่างเช่น UltraEdit จะสำรองข้อมูลไฟล์ .bak การแก้ไข some.asp ตัวแก้ไขจะสร้างไฟล์ชื่อ some.asp.bak โดยอัตโนมัติ หากคุณไม่ลบไฟล์ bak นี้ ผู้โจมตีสามารถดาวน์โหลดไฟล์ some.asp.bak ได้โดยตรง เพื่อให้โปรแกรมต้นทางของ some.asp จะถูกดาวน์โหลด
เคล็ดลับการป้องกัน: ตรวจสอบโปรแกรมของคุณอย่างรอบคอบก่อนอัปโหลดและลบเอกสารที่ไม่จำเป็น ควรระมัดระวังเป็นพิเศษกับไฟล์ที่มีส่วนต่อท้าย BAK
5.
หลักการโจมตีด้วยอักขระพิเศษ: กล่องอินพุตเป็นเป้าหมายสำหรับแฮกเกอร์ พวกเขาสามารถสร้างความเสียหายให้กับไคลเอนต์ผู้ใช้โดยการป้อนภาษาสคริปต์ หากกล่องอินพุตเกี่ยวข้องกับการสืบค้นข้อมูล พวกเขาจะใช้คำสั่งการสืบค้นพิเศษเพื่อรับข้อมูลฐานข้อมูลเพิ่มเติม หรือแม้กระทั่งทั้งโต๊ะ ดังนั้นจึงต้องกรองช่องป้อนข้อมูล อย่างไรก็ตาม หากทำการตรวจสอบความถูกต้องของอินพุตบนไคลเอนต์เท่านั้นเพื่อปรับปรุงประสิทธิภาพ ก็อาจจะยังคงถูกข้ามไป
ทักษะการป้องกัน: ในโปรแกรม ASP ที่จัดการกล่องอินพุต เช่น กระดานข้อความและ BBS วิธีที่ดีที่สุดคือบล็อกคำสั่ง HTML, JavaScript และ VBScript หากไม่มีข้อกำหนดพิเศษ คุณสามารถจำกัดการป้อนตัวอักษรและตัวเลขให้เหลือเพียงตัวอักษรและ ตัวเลขและบล็อกอักขระพิเศษ ในขณะเดียวกัน ความยาวของอักขระที่ป้อนก็มีจำกัด และไม่เพียงแต่ต้องดำเนินการตรวจสอบความถูกต้องของอินพุตบนฝั่งไคลเอ็นต์เท่านั้น แต่ยังต้องดำเนินการตรวจสอบที่คล้ายกันในโปรแกรมฝั่งเซิร์ฟเวอร์ด้วย
6.
หลักการโจมตีช่องโหว่การดาวน์โหลดฐานข้อมูล: เมื่อใช้ Access เป็นฐานข้อมูลส่วนหลัง หากมีคนรู้หรือเดาเส้นทางและชื่อฐานข้อมูลของฐานข้อมูล Access ของเซิร์ฟเวอร์ด้วยวิธีการต่างๆ เขาก็จะสามารถดาวน์โหลดไฟล์ฐานข้อมูล Access ได้ซึ่งเป็นอันตรายมาก . ของ.
เคล็ดลับการป้องกัน:
(1) ตั้งชื่อไฟล์ฐานข้อมูลของคุณให้ซับซ้อนและแปลกใหม่ และวางไว้ในหลายไดเร็กทอรี สิ่งที่เรียกว่า "แหวกแนว" เช่น หากมีฐานข้อมูลที่ต้องการบันทึกข้อมูลเกี่ยวกับหนังสือ อย่าตั้งชื่อเป็น "book.mdb" แต่ให้ตั้งชื่อแปลก ๆ เช่น d34ksfslf และวางไว้ในหลายไดเร็กทอรี เช่น ./kdslf/i44/studi/ เพื่อให้แฮกเกอร์รับไฟล์ฐานข้อมูล Access ของคุณโดยการคาดเดาได้ยากยิ่งขึ้น
(2) ห้ามเขียนชื่อฐานข้อมูลในโปรแกรม บางคนชอบเขียน DSN ในโปรแกรม เช่น
DBPath = Server.MapPath("cmddb.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
หากมีใครได้รับโปรแกรมต้นทาง ชื่อของฐานข้อมูล Access ของคุณจะมองเห็นได้ทันที ดังนั้นจึงขอแนะนำให้คุณตั้งค่าแหล่งข้อมูลใน ODBC จากนั้นเขียนสิ่งนี้ในโปรแกรม:
conn.open "shujiyuan"
(3) ใช้ Access เพื่อเข้ารหัสและเข้ารหัสไฟล์ฐานข้อมูล ขั้นแรก เลือกฐานข้อมูล (เช่น: Employee.mdb) ใน "Tools → Security → Encrypt/Decrypt Database" จากนั้นคลิก OK จากนั้นหน้าต่าง "Database Encrypted Save As" จะปรากฏขึ้น คุณสามารถบันทึกเป็น: "employer1 .mdb"
ควรสังเกตว่าการกระทำข้างต้นไม่ได้ตั้งรหัสผ่านสำหรับฐานข้อมูล แต่เพียงเข้ารหัสไฟล์ฐานข้อมูลเท่านั้น
ต่อไปเราเข้ารหัสฐานข้อมูล ขั้นแรกให้เปิด Employee1.mdb ที่เข้ารหัส เมื่อเปิด ให้เลือกโหมด "พิเศษ" จากนั้นเลือก "เครื่องมือ → ความปลอดภัย → ตั้งรหัสผ่านฐานข้อมูล" จากเมนู จากนั้นป้อนรหัสผ่าน ด้วยวิธีนี้ แม้ว่าบุคคลอื่นจะได้รับไฟล์ Employee1.mdb พวกเขาจะไม่สามารถดูเนื้อหาของ Employee1.mdb ได้หากไม่มีรหัสผ่าน
7. ป้องกันการโจมตีแบบ Remote Injection
การโจมตีประเภทนี้ควรเป็นวิธีการโจมตีที่ค่อนข้างธรรมดาในอดีต เช่น การโจมตีแบบ POST ผู้โจมตีสามารถเปลี่ยนค่าข้อมูลที่จะส่งได้ตามต้องการเพื่อให้บรรลุวัตถุประสงค์ของการโจมตี การปลอมแปลงคุกกี้ซึ่งคุ้มค่ากว่า สิ่งนี้ดึงดูดความสนใจของโปรแกรมเมอร์หรือผู้ดูแลเว็บ อย่าใช้คุกกี้เป็นวิธีการรับรองความถูกต้องของ
ผู้
ใช้
uname"))=" fqy" และ Request.cookies("upwd") ="fqy#e3i5.com" จากนั้น
……..มากกว่า…………
ถ้า
ผมคิดว่าเว็บมาสเตอร์หรือเพื่อนๆ ทุกคนที่ชอบเขียนโปรแกรมต้องไม่ทำผิดพลาดแบบนี้ ให้อภัยไม่ได้จริงๆ เราปลอมแปลง COOKIES มาหลายปีแล้ว ถ้าคุณยังใช้มันอยู่ คุณจะโทษคนอื่นที่ขโมยของคุณไม่ได้ รหัสผ่าน เกี่ยวข้องกับรหัสผ่านของผู้ใช้หรือการเข้าสู่ระบบของผู้ใช้ คุณควรใช้เซสชันที่ปลอดภัยที่สุด หากคุณต้องการใช้คุกกี้ ให้เพิ่มข้อมูลอีกหนึ่งชิ้นลงในคุกกี้ของคุณ SessionID 64 บิต คุณต้องเดาว่าเป็นไปไม่ได้ ตัวอย่าง:
ถ้าไม่ใช่ (rs.BOF หรือ rs.eof)
เข้าสู่ระบบ = "จริง"
เซสชั่น("ชื่อผู้ใช้"&sessionID) = ชื่อผู้ใช้
เซสชัน ("รหัสผ่าน"& sessionID) = รหัสผ่าน
'Response.cookies("ชื่อผู้ใช้")= ชื่อผู้ใช้
'Response.cookies("Password") = รหัสผ่าน
เรามาพูดถึงวิธีป้องกันการโจมตีแบบรีโมตอินเจคชั่นกัน การโจมตีทั่วไปคือการลากไฟล์การส่งแบบฟอร์มเดียวไปที่โลคัลแล้วชี้ Form ACTION="chk.asp" ไปยังเซิร์ฟเวอร์ของคุณเพื่อ การประมวลผลข้อมูลก็เพียงพอแล้ว หากการกรองข้อมูลทั้งหมดของคุณอยู่ในหน้าตารางเดียว ยินดีด้วย คุณจะถูกโจมตีโดยสคริปต์
ได้อย่างไร ดังต่อไปนี้: เนื้อหาของโปรแกรม ( 9)
<%
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
ถ้ากลาง(server_v1,8,len(server_v2))<>server_v2 แล้ว
response.write "<br><br><center>"
ตอบกลับเขียน " "
response.write "เส้นทางที่คุณส่งมาไม่ถูกต้อง ห้ามส่งข้อมูลจากภายนอกไซต์ กรุณาอย่าเปลี่ยนพารามิเตอร์!"
ตอบกลับเขียน "
"
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
%>
'โดยส่วนตัวแล้ว ฉันรู้สึกว่าการกรองโค้ดข้างต้นยังไม่ค่อยดีนัก ดังนั้นฉันจึงเขียนอีกอันหนึ่งว่า
'เอฟเฟกต์การกรองนี้ดีมาก แนะนำให้ใช้
if instr(request .servervariables("http_referer" )," http://"&request.servervariables("host ") )<1 แล้ว response.write "เกิดข้อผิดพลาดบนเซิร์ฟเวอร์เมื่อประมวลผล URL
หากคุณกำลังโจมตีเซิร์ฟเวอร์ด้วยวิธีใด ๆ ถ้าอย่างนั้นคุณควรโชคดีที่การดำเนินการทั้งหมดของคุณได้รับการบันทึกโดยเซิร์ฟเวอร์ เราจะแจ้งให้สำนักความมั่นคงสาธารณะและแผนกความมั่นคงแห่งชาติทราบโดยเร็วที่สุดเพื่อตรวจสอบ IP ของ
คุณ
สิ้นสุดถ้า
เนื้อหาของโปรแกรม (9)
คิดว่าทุกอย่างจะดีด้วยสิ่งนี้ และเพิ่มข้อจำกัดบางอย่างในหน้าแบบฟอร์ม เช่น ความยาวสูงสุด ฯลฯ ... แต่พระเจ้าใจร้ายมาก ยิ่งคุณกลัวบางสิ่งมากเท่าไรก็ยิ่งมีแนวโน้มมากขึ้นเท่านั้น จะเป็น อย่าลืมโจมตี ผู้เขียนสามารถทะลุขีดจำกัดของความยาวกล่องอินพุตระหว่างการโจมตีแบบฉีด SQL ได้ ฉันจะไม่. บทความดังกล่าวเผยแพร่ทางออนไลน์:
------------len.reg-----------------
ตัวแก้ไขรีจิสทรีของ Windows เวอร์ชัน 5.00
[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExtExtensions]
@="C:Documents and SettingsAdministratorDesktoplen.htm"
"บริบท"=dword:00000004
----------จบ---------------------
----------len.htm--------
----------end----------------------
การใช้งาน: ขั้นแรกให้นำเข้า len.reg ลงในรีจิสทรี (จดบันทึกเส้นทางของไฟล์)
และ จากนั้นคัดลอก len.htm ไปยังตำแหน่งที่ระบุในรีจิสทรี
เปิดหน้าเว็บ วางเคอร์เซอร์บนช่องป้อนข้อมูลที่จะเปลี่ยนความยาว แล้วคลิกขวา หากคุณเห็นตัวเลือกที่เรียกว่าส่วนขยาย ให้
คลิกเสร็จสิ้น! : สามารถทำได้
เช่น
เดียวกันขีดจำกัดของเรารอดพ้น และความพยายามทั้งหมดของเราสูญเปล่าใช่ไหม ไม่ ยกคีย์บอร์ดขึ้นแล้วปฏิเสธ กลับไปที่การกรองอักขระสคริปต์กันดีกว่า การฉีดที่พวกมันทำนั้นไม่มีอะไรมากไปกว่าการโจมตีด้วยสคริปต์ มาใส่พลังทั้งหมดของเราลงในหน้าต่างๆ หลังจาก ACTION ในหน้า chk.asp เราจะกรองอักขระที่ผิดกฎหมายออกทั้งหมด เราเพียงแต่ให้ข้อมูลเท็จต่อหน้าเราและขอให้พวกเขาเปลี่ยนรีจิสทรี เมื่อพวกเขาทำการเปลี่ยนแปลงเสร็จแล้วเท่านั้น พวกเขาจึงจะรู้ว่าสิ่งที่พวกเขาทำนั้นไร้ประโยชน์
8.
เราได้พูดคุยเกี่ยวกับม้าโทรจัน ASP ที่นี่ และฉันอยากจะเตือนผู้ดูแลเว็บฟอรั่มทุกคนให้ระมัดระวังในการอัพโหลดไฟล์: เหตุใดโฮสต์จึงถูกครอบครองโดยผู้โจมตีหลังจากที่โปรแกรมฟอรั่มเสีย? เหตุผลก็คือ...ใช่เลย! ASP โทรจัน! เป็นสิ่งที่น่ารังเกียจอย่างยิ่ง ไวรัส? ไม่ เพียงแค่ใส่ไฟล์ลงในโปรแกรมของฟอรั่มของคุณ คุณก็จะสามารถค้นหามันได้ตลอดเวลา คงจะแปลกที่จะไม่อาเจียนเป็นเลือด เราจะป้องกันไม่ให้ ASP Trojans ถูกอัพโหลดไปยังเซิร์ฟเวอร์ได้อย่างไร? วิธีการนั้นง่ายมาก หากฟอรั่มของคุณรองรับการอัพโหลดไฟล์ กรุณาตั้งค่ารูปแบบไฟล์ที่คุณต้องการอัพโหลด ฉันไม่เห็นด้วยกับการใช้รูปแบบไฟล์ที่เปลี่ยนแปลงได้โดยตรงจากโปรแกรม เสร็จสมบูรณ์ ใช่ การปล่อยให้ความสะดวกสบายแก่ตัวคุณเองมากขึ้นจะทำให้ผู้โจมตีสะดวกขึ้นด้วย จะกำหนดรูปแบบได้อย่างไร ฉันได้รวบรวมไว้ที่นี่และแก้ไขรูปแบบหนึ่ง คุณสามารถดูได้:
เนื้อหาของโปรแกรม (10)
'ตัดสินว่าประเภทไฟล์มีคุณสมบัติเหมาะสมหรือไม่
ฟอรั่มสลัวอัปโหลด
ฟอรั่มอัปโหลด = "gif,jpg,bmp,jpeg"
Forumupload=split(อัพโหลดฟอรัม,",")
สำหรับ i=0 ถึง ubound (ฟอรัมอัปโหลด)
ถ้า lcase(fileEXT)=lcase(trim(Forumupload(i))) แล้ว
ตรวจสอบ FileExt=true
ออกจากฟังก์ชัน
อื่น
CheckFileExt=false
สิ้นสุดถ้า
ต่อไป
ฟังก์ชันสิ้นสุด
'ตรวจสอบความถูกต้องตามกฎหมายของชุดเนื้อหาไฟล์
MyFile = server.CreateObject ("Scripting.FileSystemObject")
set MyText = MyFile.OpenTextFile (sFile, 1) ' อ่านไฟล์ข้อความ sTextAll = lcase(MyText.ReadAll): MyText.close
'ตรวจสอบการดำเนินการที่เป็นอันตรายในไฟล์ผู้ใช้ sStr = "8 .getfolder .createfolder .deletefolder .createdirectory
.ลบไดเรกทอรี"
sStr = sStr & " .saveas wscript.shell script.encode"
sNoString = แยก (sStr," ")
สำหรับ i = 1 ถึง sNoString(0)
ถ้า instr(sTextAll, sNoString(i)) <> 0 แล้ว
sFile = Upl.Path & sFileSave: fs.DeleteFile sFile
Response.write "<center><br><br><br><br>"& sFileSave &"ไฟล์มีคำสั่งที่เกี่ยวข้องกับไดเร็กทอรีปฏิบัติการ ฯลฯ"&_
"<br><br><font color=red><"& mid(sNoString(i),2) &"</font> ด้วยเหตุผลด้านความปลอดภัย <b> ไม่สามารถอัปโหลดได้ <b><b>"&_"</big>< / กลาง></html>"
การตอบกลับสิ้นสุด
สิ้นสุดถ้า
ถัดไป
จาก
นั้นความปลอดภัยของโปรแกรมอัปโหลดจะดีขึ้นอย่างมาก
คุณยังกังวลอยู่ไหม? คิดไพ่ทรัมป์ของคุณและขอให้ผู้ให้บริการเว็บโฮสติ้งของคุณช่วยเหลือ ล็อกอินเข้าสู่เซิร์ฟเวอร์และเปลี่ยนชื่อหรือลบรายการ "shell.application" และ "shell.application.1" ใน PROG ID จากนั้นเปลี่ยนชื่อหรือลบทั้งรายการ "WSCRIPT.SHELL" และ "WSCRIPT.SHELL.1" ฮ่าฮ่า ฉันสามารถพูดได้อย่างกล้าหาญว่าโฮสต์เสมือนมากกว่าครึ่งหนึ่งในประเทศจีนไม่เปลี่ยนแปลง ฉันแค่ดีใจที่ผู้ใช้ของคุณให้ความร่วมมือเป็นอย่างดี ไม่อย่างนั้น... ฉันจะลบ ฉันจะลบ ฉันจะลบ ลบ ลบ...