แนะนำ: คุณพร้อมที่จะป้องกันการบุกรุกของสคริปต์หรือไม่? ในฐานะผู้ดูแลระบบเครือข่ายเพื่อนหลายคนยังรับผิดชอบการพัฒนาเว็บไซต์และงานบำรุงรักษาของ บริษัท ฉันคิดว่าทุกคนมีความเชี่ยวชาญในการพัฒนาเว็บ แต่อาจไม่ชัดเจนเกี่ยวกับวิธีการเขียนรหัสสคริปต์ที่ปลอดภัยและวิธีการที่ผู้บุกรุกเจาะเซิร์ฟเวอร์ผ่านเว็บ
1. เข้าร่วมที่หัวของหน้า ASP
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: response.buffer = true Response.expiresabsolute = Now () - 1 Response.exext = 0 Response.cacheControl = ไม่มีแคช Response.addheader Pragma ไม่มีแคช |
2. เพิ่มลงในรหัส HTML
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: <head> <meta http-equiv = pragma content = no-cache> <meta http-equiv = cache-control content = no-cache> <meta http-equiv = expires content = 0> </head> |
3. เมื่อเรียกหน้าต้นฉบับอีกครั้งให้ผ่านพารามิเตอร์ href = ****. asp? random () ไปยังหน้า
สองวิธีแรกถูกกล่าวว่าบางครั้งล้มเหลวในขณะที่สามคือการผ่านพารามิเตอร์สุ่มเมื่อกระโดด! เนื่องจากแคชของ ASPX เกี่ยวข้องกับพารามิเตอร์หากพารามิเตอร์แตกต่างกันแคชจะไม่ถูกใช้ แต่หน้าจะถูกสร้างใหม่ คุณสามารถหลีกเลี่ยงการใช้แคชโดยผ่านพารามิเตอร์สุ่มทุกครั้ง สิ่งนี้ใช้งานได้กับ ASP & ASP.NET เท่านั้น
4. คุณสามารถใช้รหัสต่อไปนี้เพื่อไม่ให้แคชในหน้า JSP:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: Response.Setheader (Cache-Control, No-Cache); // http 1.1 Response.Setheader (Pragma, No-cache); // http 1.0 Response.setDateHeader (หมดอายุ 0); // ป้องกันการแคชที่พร็อกซีเซิร์ฟเวอร์ |
รหัสเหล่านี้จะถูกเพิ่มในช่วงกลางของ <head> </head> ดังนี้
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: <head> - Response.Setheader (Cache-Control, No-Cache); // http 1.1 Response.Setheader (Pragma, No-cache); // http 1.0 Response.setDateHeader (หมดอายุ 0); // ป้องกันการแคชที่พร็อกซีเซิร์ฟเวอร์ - </head> |
5. window.location.replace (webform1.aspx);
พารามิเตอร์คือหน้าคุณต้องการเขียนทับ หลักการของการแทนที่คือการแทนที่หน้าเว็บที่ระบุโดยพารามิเตอร์แทนที่ด้วยหน้าปัจจุบัน
สิ่งนี้ป้องกันไม่ให้ผู้ใช้คลิกปุ่มย้อนกลับ การใช้สคริปต์ JavaScript ดังที่แสดงด้านล่าง:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: A.HTML <html> <head> <title> A </title> <ภาษาสคริปต์ = JavaScript> ฟังก์ชั่นกระโดด () { window.location.replace (b.html); - </script> </head> <body> <a href = javascript: jump ()> b </a> </body> </html> B.HTML <html> <head> <title> b </title> <ภาษาสคริปต์ = JavaScript> ฟังก์ชั่นกระโดด () { window.location.replace (a.html); - </script> </head> <body> <a href = javascript: jump ()> a </a> </body> </html> |
4 ประเภทแรกเพียงแค่ล้างแคชนั่นคือไฟล์ชั่วคราวที่เก็บไว้ในโฟลเดอร์ไฟล์อินเทอร์เน็ตชั่วคราวในขณะที่ประเภทที่ห้าคือการใช้ไฟล์หน้า JUMP เพื่อแทนที่ไฟล์หน้าปัจจุบันและไม่ชัดเจนแคชซึ่งหมายความว่าไฟล์อินเทอร์เน็ตชั่วคราวสร้างไฟล์ชั่วคราวที่เกี่ยวข้อง การใช้ทั้งสองด้วยกันเป็นยาที่ต้องมีเพื่อล้างแคช ฉันมีบันทึกที่นี่ดังนั้นฉันจึงมาตรวจสอบบ่อยๆ
แบ่งปัน: การเขียนโปรแกรมขั้นสูง ASP 3.0 (44) บทที่ 10 ASP และข้อมูลลูกค้าพูดคุยเกี่ยวกับข้อมูลลูกค้าในเอกสาร ASP สิ่งนี้ขัดแย้งกับการเขียนโปรแกรม ASP ฝั่งเซิร์ฟเวอร์หรือไม่? นี่ไม่ใช่กรณีเพราะเรายังไม่ได้พบกับโปรแกรมเมอร์ ASP ที่ทำงานในการเขียนโปรแกรมฝั่งเซิร์ฟเวอร์เท่านั้น แม้ว่า ASP จะเป็นเทคโนโลยีฝั่งเซิร์ฟเวอร์