Web ページに投稿された電子メールは、多くの場合、何らかのツールによって自動的に抽出され、一部の違法ユーザーは抽出された電子メールを使用してスパムを送信します。これらのツールのほとんどは、メールを抽出するという目的を達成するために、リンク内の「mailto:」以降の情報、または「@」の前後の情報を検索します。 DotNetNuke (以下、DNN) のソース コードを調べていたところ、この情報が自動的に抽出されないようにする良い方法を見つけました。
DNN (Globals.vb) にはそのような関数があります。
Public Function CloakText()Function CloakText(ByVal PersonalInfo As String) As String
PersonalInfo でない場合は何もありません
Dim sb As New StringBuilder
' ASCII 文字コードに変換し、文字列を ASCII エンコードされた文字列形式に変換します
sb.Remove(0, sb.Length)
Dim StringLength As Integer = PersonalInfo.Length - 1
For i As Integer = 0 to StringLength
sb.Append(Asc(PersonalInfo.Substring(i, 1)).ToString)
i < StringLength の場合
sb.Append(",")
終了の場合
次へ
' スクリプトブロックを構築します
Dim sbScript As New StringBuilder
sbScript.Append(vbCrLf & "<script language=""javascript"">" & vbCrLf)
sbScript.Append("<!-- " & vbCrLf)
'fromCharCode メソッド: いくつかの Unicode 文字値から文字列を返します。
sbScript.Append(" document.write(String.fromCharCode(" & sb.ToString & "))" & vbCrLf)
sbScript.Append("// -->" & vbCrLf)
sbScript.Append("</script>" & vbCrLf)
sbScript.ToString を返す
それ以外
Null.NullString を返す
End If
End 関数
このコードは、まず暗号化する情報を ASCII エンコード文字列形式に変換し、次に JavaScript の document.write メソッドを使用してページに書き込みます。
以下の効果をテストしましたが、うまくいきました。試してみることもできます。
<html>
<頭>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>テスト情報の暗号化</title>
</head>
<body>
抽出できるリンク: <a href=" mailto:[email protected]">[email protected]</a><br >
抽出できないリンク:
<スクリプト言語="javascript">
<!--
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))
// -->
</script>
</body>
</html>
興味があれば、より複雑な方法を使用して暗号化することもできます。つまり、人々はもはや簡単に情報を取得できなくなります。