ハッカー攻撃をより効果的に防ぐにはどうすればよいか、個人的な意見を述べたいと思います。まず、無料プログラムは無料で使用すべきではありません。元のコードを共有できるため、攻撃者もコードを解析できます。細部に注意を払うと、サイトのセキュリティが大幅に向上します。 SQL インジェクションなどの脆弱性が発生したとしても、攻撃者がサイトをすぐにダウンさせることは不可能です。
ASP は便利で使いやすいため、ASP スクリプト言語を使用する Web サイトのバックグラウンド プログラムが増えています。ただし、ASP 自体にはセキュリティ上の脆弱性がいくつかあるため、注意しないとハッカーに悪用される可能性があります。実際、セキュリティはネットワーク管理者だけの問題ではなく、プログラマも特定のセキュリティの詳細に注意を払い、適切なセキュリティ習慣を身につけなければなりません。そうしないと、Web サイトに大きなセキュリティ リスクがもたらされてしまいます。現在、Web サイト上のほとんどの ASP プログラムには何らかのセキュリティ ホールがありますが、プログラムを作成するときに注意していれば、それでも回避することができます。
1. ユーザー名とパスワードが解読される
攻撃の原則: ユーザー名とパスワードは、多くの場合、ハッカーが最も興味を持っているものです。ソース コードが何らかの形で見られると、深刻な結果が生じます。
防止スキル: ユーザー名とパスワードに関係するプログラムはサーバー側でカプセル化するのが最善であり、データベース接続に関係するユーザー名とパスワードには最小限のアクセス許可を与える必要があります。頻繁に表示されるユーザー名とパスワードは、隠しインクルード ファイルに書き込むことができます。データベースへの接続が必要な場合は、ストアド プロシージャを実行する権限のみを付与するのが理想的であり、レコードの変更、挿入、削除の権限をユーザーに直接与えないでください。
2. 検証が回避される
攻撃原理: 現在、検証が必要な ASP プログラムのほとんどはページのヘッダーに判定ステートメントを追加していますが、これだけではハッカーが検証を回避して直接侵入する可能性があります。
防止スキル: 検証が必要な ASP ページは、前のページのファイル名を追跡できます。前のページから転送されたセッションのみがこのページを読み取ることができます。
3. Incファイル流出問題
攻撃の原理: ASP を使用したホームページが作成され、デバッグされていない場合、一部の検索エンジンによって自動的に検索オブジェクトとして追加される可能性があります。この時点で検索エンジンを使用してこれらの Web ページを検索すると、関連ファイルの場所が取得され、ブラウザーでデータベースの場所と構造の詳細が表示され、完全なソース コードが明らかになります。
防止のヒント: プログラマは、Web ページを公開する前に徹底的にデバッグする必要があります。セキュリティ専門家は、外部ユーザーが Web ページを見られないように ASP ファイルを強化する必要があります。まず、.inc ファイルのコンテンツを暗号化します。次に、ユーザーがブラウザからファイルのソース コードを直接表示できないように、.inc ファイルの代わりに .asp ファイルを使用することもできます。 inc ファイルのファイル名には、システムのデフォルト名や、ユーザーが推測しやすい特別な意味を持つ名前を使用しないでください。不規則な英字を使用してください。
4. 自動バックアップがダウンロードされます
攻撃原理: ASP プログラムを編集する一部のツールでは、ASP ファイルを作成または変更すると、エディターによってバックアップ ファイルが自動的に作成されます。たとえば、some.asp を作成または変更すると、エディターによって .bak ファイルがバックアップされます。この bak ファイルを削除しないと、攻撃者は some.asp.bak ファイルを直接ダウンロードすることができ、some.asp のソース プログラムがダウンロードされてしまいます。
予防のヒント: アップロードする前にプログラムを注意深く確認し、不要なドキュメントを削除してください。 BAK サフィックスが付いたファイルには特に注意してください。
5. 特殊文字
攻撃原理: ハッカーは入力ボックスを使用して、スクリプト言語を入力することでユーザー クライアントに損害を与える可能性があります。入力ボックスにデータ クエリが含まれている場合は、特別なクエリ ステートメントを使用してさらに多くのデータベース データやテーブルを取得します。全て。したがって、入力ボックスをフィルタリングする必要があります。ただし、効率を向上させるために入力有効性チェックがクライアント上でのみ実行される場合は、依然としてバイパスされる可能性があります。
防止スキル: 掲示板や BBS などの入力ボックスを処理する ASP プログラムでは、特別な要件がない場合、文字と数字の入力を文字と数字のみに制限することができます。数字とブロック特殊文字。同時に、入力文字の長さには制限があります。また、入力の有効性チェックをクライアント側で実行するだけでなく、同様のチェックをサーバー側のプログラムでも実行する必要があります。
6. データベースダウンロードの脆弱性
攻撃の原理: Access をバックエンド データベースとして使用する場合、誰かがサーバーの Access データベースのパスとデータベース名をさまざまな方法で知っているか推測すると、Access データベース ファイルをダウンロードすることもできますが、これは非常に危険です。
予防のヒント:
(1) データベース ファイルに複雑で型破りな名前を付け、複数のディレクトリに配置します。いわゆる型破りなもので、例えば書籍に関する情報を保存したいデータベースがあった場合、book.mdbという名前を付けるのではなく、d34ksfslf.mdbというような変な名前を付けて、 ./kdslf/i44/studi/ などの複数のディレクトリに配置されるため、ハッカーが推測によって Access データベース ファイルを入手することはさらに困難になります。
(2) プログラム中にデータベース名を記述しないでください。次のような DSN をプログラムに書き込むことを好む人もいます。
DBPath = Server.MapPath(cmddb.mdb)
conn.Open driver={Microsoft Access Driver (*.mdb)}; dbq= & DBPath
誰かがソース プログラムを入手すると、Access データベースの名前が一目でわかります。したがって、ODBC でデータ ソースを設定してから、プログラムにこれを記述することをお勧めします。
conn.openshujiyuan
(3) Access を使用してデータベース ファイルをエンコードおよび暗号化します。まず、「ツール」→「セキュリティ」→「データベースの暗号化/復号化」でデータベース (employee.mdb など) を選択し、「OK」をクリックします。その後、暗号化後にデータベースを保存するためのウィンドウが表示されます。employee1.mdb という名前で保存できます。
上記のアクションはデータベースのパスワードを設定するのではなく、データベース ファイルをエンコードするだけであり、他の人が他のツールを使用してデータベース ファイルの内容を閲覧できないようにすることに注意してください。
次に、データベースを暗号化します。まず、エンコードされたemployee1.mdbを開きます。開くときに、排他モードを選択します。次に、メニューから「ツール」→「セキュリティ」→「データベースパスワードの設定」を選択し、パスワードを入力します。こうすることで、たとえ他人がemployee1.mdbファイルを入手したとしても、パスワードがなければemployee1.mdbの内容を見ることはできません。
7. リモートインジェクション攻撃を防止する
このタイプの攻撃は、攻撃者が攻撃の目的を達成するために送信するデータの値を任意に変更できるなど、以前は比較的一般的な攻撃手法であったはずです。プログラマと Web サイトのどちらを引き起こす価値があるか、長い注意を払ってください。ユーザー認証の方法として COOKIES を使用しないでください。そうでない場合は、キーを泥棒に預けるのと同じです。
例えば:
Trim(Request.cookies (uname))=fqy かつ Request.cookies(upwd) =fqy#e3i5.com の場合、
……..もっと…………
次の場合に終了
ウェブマスターやプログラムを書くのが好きな友人は、このような間違いを犯してはいけないと思います。私たちは何年もの間 Cookie を偽造してきたのですから、パスワードを盗んだことを他人のせいにすることはできません。パスワードやユーザー ログインには、最も安全なセッションを使用することをお勧めします。COOKIES にもう 1 つの情報を追加します。そのランダムな値は 64 ビットです。可能性があります。
そうでない場合 (rs.BOF または rs.eof)
ログイン=true
セッション(ユーザー名&セッションID) = ユーザー名
セッション(パスワード&セッションID) = パスワード
'Response.cookies(ユーザー名)= ユーザー名
'Response.cookies(パスワード)= パスワード
リモート インジェクション攻撃を防ぐ方法について説明します。一般的な攻撃は、すべてのデータ フィルタリングが有効な場合、単一のフォーム送信ファイルをローカルにドラッグし、フォーム ACTION=chk.asp をサーバー内のデータを処理するファイルにポイントすることです。単一のテーブル ページで、スクリプトによる攻撃を受けていることになります。
このようなリモート攻撃を阻止するにはどうすればよいでしょうか。次のコードを参照してください。プログラム本体 (9)。
<%
server_v1=Cstr(Request.ServerVariables(HTTP_REFERER))
server_v2=Cstr(Request.ServerVariables(SERVER_NAME))
if Mid(server_v1,8,len(server_v2))<>server_v2 then
response.write <br><br><center>
応答.書き込み
response.write 送信したパスが間違っています。サイト外からデータを送信することは禁止されています。パラメータを無作為に変更しないでください。
応答.書き込み
応答.終了
終了する場合
%>
個人的には、上記のコードのフィルタリングはあまり良くないと感じているため、外部からの送信がまだ公然と入ってくる可能性があるため、別のコードを作成しました。
これは非常に優れたフィルター効果があるため、使用することをお勧めします。
if instr(request.servervariables(http_referer),http://&request.servervariables(host) )<1 then response.write URL の処理中にサーバーでエラーが発生しました。
サーバーを攻撃する何らかの手段を使用している場合は、すべての操作がサーバーに記録されているので幸いです。私たちはあなたの IP を調査するためにできるだけ早く公安局と国家安全保障局に通知します。
応答.終了
終了する場合
プログラム本体(9)
これですべてがうまくいくだろうと思ったので、最大長などのいくつかの制限をテーブルページに追加しました...しかし神はとても不親切です、あなたが何かを怖がれば怖がるほど、神はさらにそうするでしょう。忘れないでください。攻撃者は、攻撃中に SQL インジェクションの入力ボックスの長さの制限を突破できる可能性があります。HTTP_REFERER を変更する SOCKET プログラムを作成しますか?私はしません。次のような記事がネット上に掲載されました。
----------len.reg---------------
Windows レジストリ エディタ バージョン 5.00
[HKEY_CURRENT_USERSoftware&MicrosoftInternet ExplorerMenuExt 拡張機能]
@=C:Documents and SettingsAdministratorDesktoplen.htm
コンテキスト=dword:00000004
- - - - - 終わり - - - - - - - - - - -
----------len.htm---------------
- - - - - 終わり - - - - - - - - - - -
使用法: まず、len.reg をレジストリにインポートします (ファイル パスに注意してください)。
次に、len.htm をレジストリ内の指定された場所にコピーします。
Web ページを開き、長さを変更したい入力ボックスにカーソルを置き、右クリックすると、「拡張子」というオプションが表示されます。
クリックして実行してください! 追記: 入力内容を制限するスクリプトでも同じことができます。
何をするか?私たちの限界は免れ、すべての努力が無駄になったでしょうか?いいえ、キーボードを上げて「いいえ」と言いましょう。スクリプト文字のフィルタリングに戻りましょう。これらが実行するインジェクションは、スクリプト攻撃に他なりません。 ACTION の後のページに全力を注ぎましょう。chk.asp ページですべての不正な文字を除外します。結果はどうなるでしょうか。私たちは目の前で誤った指示を出し、レジストリを変更するように頼んだだけです。変更が完了したときに初めて、彼らは自分たちのやったことが無駄だったことに気づきます。
8. ASP トロイの木馬
そうは言っても、すべてのフォーラムの Web マスターに、ファイルをアップロードするときに注意するよう注意していただきたいのです。フォーラム プログラムが侵害された後、ホストも攻撃者によって占有されるのはなぜですか?その理由は…そうです! ASP トロイの木馬!まったくの忌まわしいことだ。ウイルス?いいえ。このファイルをフォーラムのプログラムに入れるだけでいつでも探すことができます。血を吐かないほうがおかしい。 ASP トロイの木馬がサーバーにアップロードされるのを防ぐにはどうすればよいでしょうか?方法は非常に簡単です。フォーラムがファイルのアップロードをサポートしている場合は、変更可能なファイル形式の使用に同意しません。画像ファイル形式と圧縮ファイルのみをアップロードします。はい、自分自身の利便性を高めることは、攻撃者にとっても利便性を高めることになります。形式を決定するにはどうすればよいですか? ここに 1 つを集めて変更しました。
プログラム本体(10)
'ファイルタイプが修飾されているかどうかを判断します
PRivate 関数 CheckFileExt (fileEXT)
ディムフォーラムアップロード
フォーラムアップロード=gif,jpg,bmp,jpeg
Forumupload=split(Forumupload,,)
for i=0 から ubound(Forumupload)
lcase(fileEXT)=lcase(trim(Forumupload(i))) の場合
CheckFileExt=true
終了関数
それ以外
CheckFileExt=false
終了する場合
次
終了機能
'ファイル内容の合法性を検証します
set MyFile = server.CreateObject (Scripting.FileSystemObject)
set MyText = MyFile.OpenTextFile (sFile, 1) 'テキスト ファイルを読み込みます
sTextAll = lcase(MyText.ReadAll): MyText.close
'ユーザーファイル内の危険な操作を判断する
sStr =8 .getfolder .createfolder .deletefolder .createdirectory
.deletedirectory
sStr = sStr & .saveas wscript.shell script.encode
sNoString = スプリット(sStr, )
i = 1 から sNoString(0) まで
if instr(sTextAll, sNoString(i)) <> 0 then
sFile = Upl.Path & sFileSave: fs.DeleteFile sFile
Response.write <center><br><big>& sFileSave &ファイルには操作ディレクトリ等に関するコマンドが含まれています&_
<br><font color=red>&mid(sNoString(i),2)&</font>、セキュリティ上の理由から、<b>アップロードできません。 <b>&_</big></center></html>
応答.終了
終了する場合
次
検証のためにこれらをアップロード プログラムに追加すると、アップロード プログラムのセキュリティが大幅に向上します。
何?まだ心配ですか?切り札を考え出して、Web ホスティング サービス プロバイダーに助けを求めてください。サーバーにログインし、PROG ID 内のshell.application およびshell.application.1 項目の名前を変更または削除します。次に、WSCRIPT.SHELL 項目と WSCRIPT.SHELL.1 の両方の名前を変更するか、削除します。あはは、おそらく中国のバーチャルホストの半分以上は変わっていない、と大胆に言えます。ユーザーが非常に協力的であることは嬉しいことですが、そうでない場合は...削除します、削除します、削除します、削除します、削除します...