Web サイト (掲示板) でのスパム メッセージやスパム コメントを効果的に防ぐにはどうすればよいですか?この記事では、詳細なソリューションのアイデアと実装手順について説明します。詳しく知りたい方は、以下を参照してください。
1. フォーム入力ページ: <input 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>")
response.redirect("sign.asp")
終了する場合
3. 起源を特定する
次のようにコードをコピーします。
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
'応答.書き込み(サーバー_v1)
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
'応答.書き込み(サーバー_v2)
if Mid(server_v1,8,len(server_v2))<>server_v2 then
Response.Write("<script language=javascript>alert('データの外部送信は禁止されています!');</script>")
応答.終了
終了する場合
4. 1 日あたりの送信数を設定する
次のようにコードをコピーします。
'ユーザーが一度送信したとき
request.cookies("postnum")="" の場合
応答.cookies("ポスト番号")=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(Request.ServerVariables("REMOTE_ADDR"))
right(server_ip,8) = "194.165" の場合。
response.write "重複した投稿 194.165 は禁止されています。"
応答.End()
終了する場合
1. 公開された情報に信頼できる情報源があるかどうかを判断します。自然人によって投稿されたものである限り、当社がユーザーに提供する投稿ページから送信されたものでなければならず、情報源が存在する必要があります。機械によって投稿されたものである場合には、情報源は存在しません。
「出所を特定し、外部からの投稿を禁止する」
次のようにコードをコピーします。
薄暗いサーバー_v1、サーバー_v2
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("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 など) を開いたときに時間を記録し、次のような非表示オブジェクトをフォーム送信フォームに追加します。
<input type="hidden" value="<%=Now()%>">
次に、ユーザーがメッセージを作成して特定の処理ページ (addok.asp など) に送信すると、現在の時刻が取得され、add.asp の intime1 時刻と比較され、時刻差が設定より小さい場合は、 20秒などの時間ではメッセージは禁止され、機械であると判断されます。コードは次のように記述できます。
次のようにコードをコピーします。
DateDiff("s",request.form("intime1"), Now()) < 20 の場合
response.write "<SCRIPT language=JavaScript>alert('メッセージ速度が速すぎます。メッセージを残すことは禁止されています!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
応答.終了
終了する場合
上記の 3 つの方法により、ロボットによるスパム コメントのほとんどをブロックできます。まだ大量のコメントが残っている場合は、おそらく人間が残したものと考えられます。しかし、人間のメッセージをどのように扱うのでしょうか? flymorn はそれに対処する方法も提供しています。
方法は非常に簡単で、ユーザーのCookieとIPを記録することで、同じユーザーが投稿するコメントの数を制限するというものです。たとえば、1 日 24 時間以内に、同じユーザーが投稿できるメッセージは 5 件のみです。これは次の方法で実現できます。
次のようにコードをコピーします。
<%'ユーザーが一度送信したとき
request.cookies("postnum")="" の場合
応答.cookies("ポスト番号")=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>"
応答.終了
終了する場合
%>
上記の制限により、手動投稿もある程度制限されております。もちろん、上記の方法は Cookie の判断に基づいていますが、ユーザーはブラウザを通じて Cookie をクリアできますが、これによりスパムの投稿がより困難になり、しきい値が高くなります。また、目標を達成するために、パブリッシャーの IP を引き続き決定し、同じ IP の下での投稿数を制限することもできます。ここではこれ以上の拡張はありません。投稿を制限するために IP を決定する方法を独自に設計できます。この記事で説明したトピックについて意見や提案がある場合は、一緒に議論できるようにコメントを残してください。