Asp จำกัดการเข้าถึง IP และป้องกันไม่ให้ส่วน IP บางส่วนเข้าถึงโค้ดของไซต์นี้
บ่อยครั้งที่เว็บไซต์ B2B หรือ B2C ในท้องถิ่นบางแห่งมีสแปมจำนวนมากโพสต์เป็นชุดทุกที่ ฉันต้องการแบ่งปันวิธีแก้ปัญหาของฉันกับทุกคน
รหัสมีดังนี้:
-
''รับที่อยู่ของผู้เยี่ยมชม
ip=Request.ServerVariables(REMOTE_ADDR)
''ช่วงที่อยู่ IP ที่อนุญาตคือ 10.0.0.0~10.68.63.255
อนุญาต 1=10.0.0.0
อนุญาตip2=10.68.10.71
การตอบสนอง writecheckip (ip,allowip1,allowip2)
ฟังก์ชั่นการตรวจสอบ (ip,allowip1,allowip2)
ดิมเช็ค(4)
ตรวจสอบ = false
ipstr=แยก(ip,.)
Allow1=แยก(allowip1,.)
Allow2=แยก(allowip2,.)
ifcint(allow1(0))>cint(allow2(0))then'' กำหนดว่าส่วนที่อยู่ IP นั้นถูกกฎหมายหรือไม่
Response.writeการเข้าถึงที่ต้องห้าม
ฟังก์ชั่นทางออก
สิ้นสุด
fori=0toubound(ipstr)
ifcint(allow1(i))<cint(allow2(i))แล้ว
ifcint(allow1(i))=cint(ipstr(i))แล้ว
ตรวจสอบ (i) = จริง
ตรวจสอบ=จริง
ทางออกสำหรับ
อื่น
ifcint(ipstr(i))<cint(allow2(i))แล้ว
ตรวจสอบ (i) = จริง
ตรวจสอบ=จริง
ทางออกสำหรับ
อื่น
ifcint(ipstr(i))>cint(allow2(i))แล้ว
ตรวจสอบ (i) = เท็จ
ตรวจสอบ = false
ทางออกสำหรับ
อื่น
ตรวจสอบ (i) = จริง
ตรวจสอบ=จริง
สิ้นสุด
สิ้นสุด
สิ้นสุด
อื่น
ifcint(allow1(i))>cint(ipstr(i))orcint(allow1(i))<cint(ipstr(i))แล้ว
ตรวจสอบ (i) = เท็จ
ตรวจสอบ = false
ifi<>ubound(ipstr)แล้ว
ทางออกสำหรับ
สิ้นสุด
อื่น
ตรวจสอบ (i) = จริง
สิ้นสุด
สิ้นสุด
ต่อไป
if(check(0)=trueandcheck(1)=trueandcheck(2)=trueandcheck(3)=false)และ(cint(allow2(2))>cint(ipstr(2)))แล้ว
ตรวจสอบ=จริง
สิ้นสุด
ฟังก์ชั่นสุดท้าย
-
เพิ่มรหัสต่อไปนี้ลงในเพจ ASP ของคุณเพื่อทดสอบผลกระทบ:
คัดลอกรหัสรหัสดังต่อไปนี้:
-
'คอลเลกชันของที่อยู่ IP ที่ถูกบล็อก (เซ็กเมนต์) เครื่องหมายดอกจันเป็นอักขระตัวแทน ซึ่งมักจะบันทึกไว้ในไฟล์การกำหนดค่า
Const BadIPGroup = 192.168.1.*|202.68.*.*|*.12.55.34|185.*.96.24|127.*.0.1|192.168.0.1
ถ้า IsForbidIP(BadIPGroup) = True แล้ว
Response.Write (ห้ามเข้าถึง GetIP และที่อยู่ IP)
การตอบสนองสิ้นสุด()
สิ้นสุดถ้า
'พารามิเตอร์ vBadIP: ส่วน IP ที่จะบล็อก, ตั้งค่าที่อยู่ IP, ใช้สัญลักษณ์ | เพื่อแยกที่อยู่ IP หลายรายการ (ส่วน)
'Return Bool: จริงอยู่ IP ผู้ใช้อยู่ในช่วงที่ถูกบล็อก มิฉะนั้นจะเป็นเท็จ
ฟังก์ชัน IsForbidIP(vBadIP)
ตัวนับติ่ม, arrIPPart, arrBadIP, arrBadIPPart, i, j
arrBadIP = แยก(vBadIP, |)
arrIPPart = แยก(GetIP(), .)
สำหรับ i = 0 ถึง UBound(arrBadIP)
ตัวนับ = 0
arrBadIPPart = แยก(arrBadIP(i), .)
สำหรับ j = 0 ถึง UBound (arrIPPart)
ถ้า(arrBadIPPart(j)) = * หรือ Cstr(arrIPPart(j)) = Cstr(arrBadIPPart(j)) จากนั้น
ตัวนับ = ตัวนับ + 1
สิ้นสุดถ้า
ต่อไป
ถ้าตัวนับ = 4 แล้ว
IsForbidIP = จริง
ออกจากฟังก์ชัน
สิ้นสุดถ้า
ต่อไป
IsForbidIP = เท็จ
ฟังก์ชันสิ้นสุด
''ส่งคืนที่อยู่ IP ของลูกค้า
ฟังก์ชัน GetIP()
ไอพีสลัว
IP = Request.ServerVariables (HTTP_X_FORWARDED_FOR)
ถ้า IP = ดังนั้น IP = Request.ServerVariables(REMOTE_ADDR)
รับ IP=IP
ฟังก์ชันสิ้นสุด
-
ด้วยวิธีนี้ คุณสามารถจำกัดช่วง IP สำหรับการเข้าถึงเว็บไซต์ได้ คุณสามารถตั้งค่าตามช่วง IP ของภูมิภาคได้
ฉันใช้วิธีนี้เพื่อป้องกันไม่ให้ผู้ใช้ต่างประเทศใช้ซอฟต์แวร์ปลอมเพื่อโพสต์ข้อมูลบนเว็บไซต์ของฉันอย่างมีเจตนาร้าย!