より包括的な ASP CC 攻撃対策コード共有。主にセッションを使用して判断します。次のようにコードをコピーします。
<%
Dim CC_Info(4),strInfo,strTemp
If Session(CC_Info) = then
CC_Info(0) = cclog.txt 'ログファイル名
CC_Info(1) = Request.ServerVariables(HTTP_X_FORWARDED_FOR)
CC_Info(2) = リクエスト.サーバー変数(REMOTE_ADDR)
CC_Info(3) = 10 'N 秒以内の現在のページの更新を禁止します
CC_Info(4) = badip.txt 'IP ブラックリスト ファイル名
セッション(CC_Info) = CC_Info(0) &|& CC_Info(1) &|& CC_Info(2) &|& CC_Info(3) &|& CC_Info(4)
それ以外
strInfo = Split(セッション(CC_Info),|)
CC_Info(0) = strInfo(0)
CC_Info(1) = strInfo(1)
CC_Info(2) = strInfo(2)
CC_Info(3) = strInfo(3)
CC_Info(4) = strInfo(4)
終了の場合
Const chkRefresh = 1 '0 アンチリフレッシュをオフにします
Const chkProxy = 1 '0 はプロキシ検証をオフにします
Const chkBadIP = 1 '0 IP ブラックリストをオフにします
セッション(BadIP) = thenの場合
strInfo = ReadFile(CC_Info(4))
strInfo = の場合、strInfo = chinavb.net
セッション(BadIP) = strInfo
それ以外
strInfo = セッション(BadIP)
終了の場合
'/*第一層判定、N秒以内リフレッシュ禁止*/
chkRefresh = 1 の場合
If Session(RefreshTime)= then
セッション(リフレッシュ時間)=今()
それ以外
If DateDiff(s, Session(RefreshTime), Now()) < CInt(CC_Info(3)) then
Response.Write(システムがビジー状態です。しばらくしてからもう一度お試しください。エラー コード 001)
Response.End()
それ以外
セッション(リフレッシュ時間)=今()
終了の場合
終了の場合
終了の場合
'/*第二段階の判断、エージェントは閲覧を禁止します*/
chkProxy = 1 の場合
If CC_Info(1) <> then
InStr(strInfo,CC_Info(1)) = 0 の場合
strTemp = CC_Info(1) & vbCrLf
InStr(strInfo,CC_Info(2)) = 0 の場合
strTemp = strTemp & [ & CC_Info(2) & ] & vbCrLf
終了の場合
保存ログ CC_Info(4),strTemp
strInfo = strInfo & strTemp
セッション(BadIP) = strInfo
終了の場合
'CC攻撃ログを記録する
保存ログ CC_Info(0),CC_Info(1) & [& CC_Info(2) & ] & Now() &vbCrLf
Response.Write(システムがビジー状態です。しばらくしてからもう一度お試しください。エラー コード 002)
Response.End()
終了の場合
終了の場合
'/*第3段階判定、IPブラックリストにより閲覧禁止*/
chkBadIP = 1 の場合
InStr(strInfo,CC_Info(2))>0 の場合
Response.Write(システムがビジー状態です。しばらくしてからもう一度お試しください。エラー コード 003)
Response.End()
終了の場合
終了の場合
'読み取り用 = 1、書き込み用 = 2、追加用 = 8
関数 SaveLog(ファイル名, ファイル内容)
エラー時は次へ再開
薄暗い fso、このファイル
ファイル名 = Server.MapPath(ファイル名)
fso = CreateObject(Scripting.FileSystemObject) を設定します。
エラー <> 0 の場合
Response.Write(ファイル &filename& の書き込みに失敗しました。システムが FSO をサポートしていない可能性があります!)
Response.End()
終了の場合
thisfile = fso.OpenTextFile(ファイル名, 8, True) を設定します。
thisfile.write(ファイルコンテンツ)
このファイル.閉じる
fso = なしを設定します
終了機能
関数 ReadFile(ファイル名)
エラー時は次へ再開
薄暗い fso、このファイル
fso = CreateObject(Scripting.FileSystemObject) を設定します。
エラー <> 0 の場合
Response.Write(ファイル &filename& の読み取りに失敗しました。システムが FSO をサポートしていない可能性があります!)
Response.End()
終了の場合
このファイルを設定 = fso.OpenTextFile(Server.MapPath(ファイル名), 1, True)
ReadFile = thisfile.ReadAll
このファイル.閉じる
このファイルを何も設定しない
fso = なしを設定します
終了機能
%>