จะป้องกันข้อความสแปมและความคิดเห็นสแปมบนเว็บไซต์ (กระดานข้อความ) ได้อย่างมีประสิทธิภาพได้อย่างไร? บทความนี้ให้แนวคิดการแก้ปัญหาโดยละเอียดและขั้นตอนการใช้งาน เพื่อนที่ต้องการทราบข้อมูลเพิ่มเติมสามารถดูได้ ในหน้าการกรอกแบบฟอร์ม : <input name=intime1 type=hidden value=<%=Now()%>>
ในหน้าการประมวลผลการส่ง ให้ตั้งเวลาการส่ง
คัดลอกรหัสรหัสดังต่อไปนี้:
ถ้า DateDiff(s,request.form(intime1), Now()) < 5 แล้ว
response.write <SCRIPT language=JavaScript>alert('ข้อความของคุณเร็วเกินไป ห้ามฝากข้อความ!');
response.write this.location.href='vbscript:history.back()';</SCRIPT>
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
2. รหัสยืนยัน
คัดลอกรหัสรหัสดังต่อไปนี้:
yz=cstr(request.Form(yz))
yz1=cstr(เซสชัน(yz1))
ถ้า yz1<>yz แล้ว
Response.Write(<script language=javascript>alert('กรุณาป้อนรหัสยืนยันอย่างถูกต้อง!');</script>)
การตอบสนองการเปลี่ยนเส้นทาง (sign.asp)
สิ้นสุดถ้า
3. กำหนดที่มา
คัดลอกรหัสรหัสดังต่อไปนี้:
server_v1=Cstr(คำขอตัวแปรเซิร์ฟเวอร์(HTTP_REFERER))
'การตอบสนองเขียน (server_v1)
server_v2=Cstr (คำขอตัวแปรเซิร์ฟเวอร์ (SERVER_NAME))
'การตอบสนองเขียน (server_v2)
ถ้ากลาง (server_v1,8,len(server_v2))<>server_v2 แล้ว
Response.Write(<script language=javascript>alert('ห้ามส่งข้อมูลภายนอก!');</script>)
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
4. กำหนดจำนวนการส่งรายวัน
คัดลอกรหัสรหัสดังต่อไปนี้:
'เมื่อผู้ใช้ส่งหนึ่งครั้ง
ถ้า request.cookies(postnum)= แล้ว
response.cookies(postnum)=1
response.cookies(postnum).expires=DateAdd(h, 24, Now())
อื่น
response.cookies(postnum)=request.cookies(postnum)+1
สิ้นสุดถ้า
ถ้า request.cookies(postnum) > 3 แล้ว
response.write <SCRIPT language=JavaScript>alert('จำนวนข้อความในวันนี้เกินขีดจำกัด ห้ามไม่ให้ส่งข้อความ!');
response.write this.location.href='vbscript:history.back()';</SCRIPT>
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
5. บ้าน IP
คัดลอกรหัสรหัสดังต่อไปนี้:
server_ip=Cstr(คำขอ.ServerVariables(REMOTE_ADDR))
ถ้าใช่ (server_ip,8) = 194.165
response.write ห้ามการส่งที่ทับซ้อนกัน 194.165
การตอบสนองสิ้นสุด()
สิ้นสุดถ้า
1. ตรวจสอบว่าข้อมูลที่เผยแพร่มีแหล่งที่เชื่อถือได้หรือไม่ ตราบใดที่มันถูกโพสต์โดยบุคคลธรรมดา มันจะต้องมาจากหน้าการส่งที่เราให้กับผู้ใช้ และจะต้องมีแหล่งที่มา หากถูกโพสต์โดยเครื่อง จะไม่มีแหล่งข้อมูล
'กำหนดที่มาและห้ามส่งจากภายนอก
คัดลอกรหัสรหัสดังต่อไปนี้:
สลัว server_v1,server_v2
server_v1=Cstr(คำขอตัวแปรเซิร์ฟเวอร์(HTTP_REFERER))
server_v2=Cstr (คำขอตัวแปรเซิร์ฟเวอร์ (SERVER_NAME))
ถ้า server_v1= หรือ instr(server_v1,/add.asp)<=0 หรือ mid(server_v1,8,len(server_v2))<>server_v2 แล้ว
response.write <SCRIPT language=JavaScript>alert('แหล่งที่ผิดกฎหมาย ห้ามส่งจากภายนอก!');
response.write this.location.href='vbscript:history.back()';</SCRIPT>
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
โปรดทราบว่า /add.asp ด้านบนคือหน้าต้นฉบับของหน้าการส่ง แน่นอนว่าเครื่องจักรยังสามารถปลอมแปลงต้นกำเนิดได้ ซึ่งจำเป็นต้องจัดการร่วมกับวิธีการต่อไปนี้
2. รหัสยืนยัน รหัสยืนยันเป็นวิธีการที่ใช้ได้เสมอในการจัดการกับข้อความสแปมของเครื่อง รหัสยืนยันที่แตกต่างกันมีความสามารถที่แตกต่างกันในการจัดการกับข้อความของเครื่อง ยิ่งรหัสยืนยันซับซ้อนมากเท่าไร เครื่องก็จะถอดรหัสได้ยากขึ้นเท่านั้น ซึ่งจำเป็นต้องเลือกความสมดุลระหว่างการพิจารณาความรู้สึกของผู้ใช้กับการจัดการกับเครื่องจักร ฉันจะไม่พูดอะไรมากเกี่ยวกับวิธีใช้รหัสยืนยัน การค้นหาใน Google และ Baidu จะทำให้มีการแนะนำมากมาย
3. กำหนดเวลาในการส่งแหล่งที่มา หากเวลาที่ใช้ในหน้าการส่งสั้นเกินไป เช่น 20 วินาที โดยทั่วไปตราบใดที่เป็นรายบุคคล เวลาในการพิมพ์ของเขาก็ไม่จำเป็นต้องสั้นขนาดนี้ ตัวอย่างเช่น เมื่อผู้ใช้เปิดเพจ (เช่น add.asp) เราจะบันทึกเวลาและเพิ่มวัตถุที่ซ่อนอยู่ในแบบฟอร์มการส่งแบบฟอร์ม เช่น:
<ชื่ออินพุต=intime1 type=ค่าที่ซ่อนอยู่=<%=ตอนนี้()%>>
จากนั้นเมื่อผู้ใช้เขียนข้อความและส่งไปยังหน้าการประมวลผลเฉพาะ (เช่น addok.asp) เราจะรับเวลาปัจจุบันและเปรียบเทียบกับเวลา intime1 ใน add.asp หากเวลาต่างกันน้อยกว่าที่ตั้งไว้ เวลาเช่น 20 วินาที ห้ามส่งข้อความและกำหนดให้เป็นเครื่อง รหัสสามารถเขียนได้ดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
ถ้า DateDiff(s,request.form(intime1), Now()) < 20 แล้ว
response.write <SCRIPT language=JavaScript>alert('ข้อความของคุณเร็วเกินไป ห้ามฝากข้อความ!');
response.write this.location.href='vbscript:history.back()';</SCRIPT>
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
ด้วยสามวิธีข้างต้น ความคิดเห็นที่เป็นสแปมส่วนใหญ่ที่สร้างโดยโรบ็อตสามารถถูกบล็อกได้ หากยังมีความคิดเห็นจำนวนมาก ความคิดเห็นเหล่านั้นก็อาจจะเหลือเพียงเนื้อหนังของมนุษย์ แต่เราจะจัดการกับข้อความของมนุษย์อย่างไร? flymorn ยังมีวิธีจัดการกับมันอีกด้วย
วิธีการนั้นง่ายมาก ซึ่งก็คือจำกัดจำนวนความคิดเห็นที่โพสต์โดยผู้ใช้คนเดียวกันโดยการบันทึกคุกกี้และ IP ของผู้ใช้ ตัวอย่างเช่น ภายใน 24 ชั่วโมงต่อวัน ผู้ใช้คนเดียวกันจะได้รับอนุญาตให้โพสต์ข้อความได้เพียง 5 ข้อความเท่านั้น เราสามารถทำได้ด้วยวิธีการดังต่อไปนี้
คัดลอกรหัสรหัสดังต่อไปนี้:
<%'เมื่อผู้ใช้ส่งหนึ่งครั้ง
ถ้า request.cookies(postnum)= แล้ว
response.cookies(postnum)=1
response.cookies(postnum).expires=DateAdd(h, 24, Now())
อื่น
response.cookies(postnum)=request.cookies(postnum)+1
สิ้นสุดถ้า
ถ้า request.cookies(postnum) > 5 แล้ว
response.write <SCRIPT language=JavaScript>alert('จำนวนข้อความในวันนี้เกินขีดจำกัด ห้ามไม่ให้ส่งข้อความ!');
response.write this.location.href='vbscript:history.back()';</SCRIPT>
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
-
ด้วยข้อจำกัดข้างต้น การโพสต์ด้วยตนเองก็ถูกจำกัดในระดับหนึ่งเช่นกัน วิธีการข้างต้นขึ้นอยู่กับการพิจารณาคุกกี้ แน่นอนว่าผู้ใช้สามารถล้างคุกกี้ผ่านเบราว์เซอร์ได้ แต่จะทำให้โพสต์สแปมและเพิ่มเกณฑ์ได้ยากขึ้น นอกจากนี้เรายังสามารถกำหนด IP ของผู้เผยแพร่ต่อไปและจำกัดจำนวนโพสต์ภายใต้ IP เดียวกันเพื่อให้บรรลุเป้าหมายของเรา จะไม่มีการขยายเพิ่มเติมที่นี่ คุณสามารถออกแบบวิธีการระบุ IP เพื่อจำกัดการโพสต์ของคุณเองได้ หากคุณมีความคิดเห็นหรือข้อเสนอแนะในหัวข้อที่กล่าวถึงในบทความนี้ โปรดแสดงความคิดเห็นเพื่อให้เราพูดคุยกัน