อีเมลที่โพสต์บนหน้าเว็บมักจะถูกแยกออกโดยอัตโนมัติโดยเครื่องมือบางอย่าง และผู้ใช้ที่ผิดกฎหมายบางรายจะใช้อีเมลที่แยกออกมาเพื่อส่งสแปม เครื่องมือเหล่านี้ส่วนใหญ่จะค้นหาข้อมูลหลัง "mailto:" หรือข้อมูลก่อนและหลัง "@" ในลิงก์เพื่อให้บรรลุวัตถุประสงค์ในการแยกอีเมล ฉันกำลังดูซอร์สโค้ดของ DotNetNuke (ต่อไปนี้จะเรียกว่า DNN) และพบวิธีที่ดีในการป้องกันไม่ให้ข้อมูลนี้ถูกแยกออกโดยอัตโนมัติ
มีฟังก์ชันดังกล่าวใน DNN (ใน Globals.vb):
ฟังก์ชั่นสาธารณะ CloakText () ฟังก์ชั่น CloakText (ByVal PersonalInfo As String) เป็นสตริง
ถ้าไม่ใช่ PersonalInfo ก็ไม่มีอะไรเลย
Dim sb As New StringBuilder
' แปลงเป็นรหัสอักขระ ASCII แปลงสตริงเป็นรูปแบบสตริงที่เข้ารหัส ASCII
sb.Remove(0, sb.ความยาว)
Dim StringLength As Integer = PersonalInfo.Length - 1
สำหรับ i As Integer = 0 ถึง StringLength
sb.ผนวก(Asc(PersonalInfo.Substring(i, 1)).ToString)
ถ้าฉัน < StringLength แล้ว
sb.ผนวก(",")
สิ้นสุดถ้า
ถัดไป
' สร้างบล็อกสคริปต์
Dim sbScript As New StringBuilder
sbScript.Append(vbCrLf & "<script language=""javascript"">" & vbCrLf)
sbScript.ผนวก("<!-- " & vbCrLf)
'เมธอด fromCharCode: ส่งกลับสตริงจากค่าอักขระ Unicode บางตัว
sbScript.Append(" document.write(String.fromCharCode(" & sb.ToString & "))" & vbCrLf)
sbScript.ผนวก("// -->" & vbCrLf)
sbScript.Append("</script>" & vbCrLf)
กลับ sbScript.ToString
อื่น
กลับ Null.NullString
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
โค้ดนี้จะแปลงข้อมูลที่จะเข้ารหัสเป็นรูปแบบสตริงที่เข้ารหัส ASCII ก่อน จากนั้นจึงเขียนลงในเพจโดยใช้วิธี document.write ใน javascript
ฉันทดสอบเอฟเฟกต์ต่อไปนี้แล้วและใช้งานได้ดี คุณยังสามารถลองได้
<html>
<หัว>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>ทดสอบการเข้ารหัสข้อมูล</title>
</หัว>
<ร่างกาย>
ลิงก์ที่สามารถแตกได้: <a href=" mailto:[email protected]">[email protected]</a><br >
ลิงค์ที่ไม่สามารถแยกได้:
<ภาษาสคริปต์ = "จาวาสคริปต์">
-
document.write(String.fromCharCode(60,97,32,104,114,101,102,61,34,109,97,105,108,116,111,58,120,120,120,64,116,111,109,
46,99,111,109,34,62,120,120,120,64,116,111,109,46,99,111,109,60,47,97,62))
-
</สคริปต์>
</ร่างกาย>
</html>
หากคุณสนใจ คุณยังสามารถใช้วิธีการที่ซับซ้อนมากขึ้นในการเข้ารหัสได้ พูดง่ายๆ ก็คือ ผู้คนไม่สามารถรับข้อมูลได้อย่างง่ายดายอีกต่อไป!