mdb を asp に変更するとダウンロードができなくなるというのはナンセンスであることがわかりました。 Flashget を使用して、data.asp ファイルをテスト的にダウンロードし、data.mdb ファイルとして保存しました。ACCESS で開くと、ファイルはそのままであることがわかりました。 1. 想像力を働かせてデータベースのファイル名を変更します。
ただし、攻撃者がサードパーティの方法でデータベースへのパスを取得した場合、データベースをダウンロードできます。したがって、機密性は最小限に保たれます。
2. データベース名のサフィックスを ASA、ASP などに変更します。
この方法はいくつかの設定と組み合わせる必要があります。そうしないと、この記事の冒頭の状況が発生します。
(1) バイナリフィールドが追加されました。
(2) このファイルに <% または %> を追加すると、IIS は ASP 構文に従ってファイルを解析し、500 エラーを報告します。当然、ダウンロードできません。ただし、データベースのテキスト フィールドまたはメモ フィールドに <% を追加するだけでは意味がありません。ACCESS がコンテンツを処理し、データベース内に <% として存在するため、これは無効です。正しい方法は、OLE オブジェクト フィールドに <% を格納することで、目的を達成できます。
やり方:
まず、メモ帳を使用して内容が <% の新しいテキスト ファイルを作成し、ランダムな名前を付けて保存します。
次に、Access でデータベース ファイルを開き、新しいテーブルを作成し、ランダムな名前を付け、テーブルに OLE オブジェクト フィールドを追加して、レコードを追加し、前に作成したテキスト ファイルを挿入します。 「Data Packet」という名前の新しいレコードが表示されます。
3. データベース名の前に # を追加します
データベース ファイルの先頭の名前に # を追加し、データベース接続ファイル (conn.asp など) 内のデータベース アドレスを変更するだけです。ダウンロードする際には、# 記号より前の部分のみが認識されるという原則があり、たとえば、http://www.pcdigest.com/date/#123 をダウンロードする場合、次の部分は自動的に削除されます。 .mdb (存在すると仮定)。 IE であっても FLASHGET であっても、得られるものは http://www.test.com/date/index.htm (index.asp、default.jsp など、IIS で設定したホームページ ドキュメント) です。
さらに、データベース ファイル名にスペースを保持することも同様の役割を果たします。アドレス解決の HTTP プロトコルの特性により、スペースは http://www.test.com/date/ のように % としてエンコードされます。 123;456.mdb 、http://www.test.com/date/123%456.mdb からダウンロード。私たちのディレクトリにはファイル 123%456.mdb がまったくないため、この変更後は、データベース アドレスを公開したとしても、通常は他の人がそれをダウンロードできなくなります。
4. データベースを暗号化する
まず、[ツール] -> [セキュリティ] -> [データベースの暗号化/復号化] を選択し、データベース (例:employee.mdb) を選択して、[OK] をクリックします。次に、暗号化後のデータベースを保存するためのウィンドウが表示され、「employee1」という名前で保存します。 mdb。その後、employee.mdb がエンコードされて、employee1.mdb として保存されます。上記の操作はデータベースのパスワードを設定するものではなく、他のユーザーが他のツールを使用してデータベース ファイルをエンコードすることだけを目的としていることに注意してください。データベース ファイルの内容を表示します。
次に、データベースを暗号化します。まず、エンコードされたemployee1.mdbを開きます。開くときに、排他モードを選択します。次に、メニューから [ツール] -> [セキュリティ] -> [データベース パスワードの設定] を選択し、パスワードを入力します。このようにして、他の人がemployee1.mdbファイルを取得したとしても、パスワードがなければemployee1.mdbを見ることはできません。
暗号化後、データベース接続ページを次のように変更する必要があります。
conn.open driver={Microsoft アクセス ドライバー (*.mdb)};uid=admin;pwd=データベース パスワード;dbq=データベース パス
この変更後は、データベースがダウンロードされても、他の人はそのデータベースを開くことができなくなります (データベース接続ページのパスワードが漏洩していない限り)。
ただし、Access データベースの暗号化メカニズムは比較的単純であるため、パスワードが設定されている場合でも復号化が簡単であることは注目に値します。データベースシステムは、ユーザーが入力したパスワードと固定キーのXOR演算により暗号化文字列を形成し、*.mdbファイルのアドレス&H42から始まる領域に格納します。したがって、優れたプログラマは、Access データベースのパスワードを簡単に取得するための数十行の小さなプログラムを簡単に作成できます。したがって、データベースがダウンロードされる限り、その情報セキュリティは不明のままです。
5. データベースを WEB ディレクトリの外に配置するか、データベース接続ファイルを他の仮想ディレクトリに配置します。
WEB ディレクトリが e:/webroot の場合は、データベースを e:/data フォルダに置き、e:/webroot のデータベース接続ページでデータベース接続アドレスを ../data/database name 形式に変更します。データベースは正常に呼び出すことができますが、WEB ディレクトリにないためダウンロードできません。この方法は通常、仮想空間を購入するユーザーには適していません。
6. ODBC データ ソースを使用します。
ASP などのプログラミングでは、可能であれば ODBC データ ソースを使用し、プログラム内にデータベース名を記述しないようにしてください。そうしないと、ASP ソース コードの機密性とともにデータベース名が失われます。例: DBPath。 = Server.MapPath(. ./123/abc/asfadf.mdb )
conn.open driver={Microsoft Access Driver (*.mdb)};dbq=& DBPath
データベースの名前がどれほど奇妙であっても、隠しディレクトリがどれほど深くても、ASP ソース コードが侵害されると、簡単にダウンロードされてしまうことがわかります。 ODBC データ ソースを使用する場合、このような問題は発生しません: conn.open ODBC-DSN 名。ただし、ディレクトリを移動する場合は、データ ソースをリセットする必要があるため、より便利な方法を参照してください。第7章 8つの方法!
7. MDBなどのデータベース名の拡張マッピングを追加
この方法は、IIS 設定を変更することによって実現されます。これは、IIS 制御を持つ友人には適していますが、仮想ホストを購入するユーザーには適していません (管理者が設定していない場合)。現時点ではこの方法がベストだと思います。 1 つの変更を加えるだけで、サイトのデータベース全体がダウンロードされないようにすることができます。コードを変更することなく、ターゲットアドレスが公開された場合でもダウンロードを防ぐことができます。
IIS のプロパティ --- ホーム ディレクトリ --- 構成 --- マッピング --- アプリケーション拡張機能に .mdb ファイルのアプリケーション解析を追加します。ここで選択する DLL (または EXE など) は任意ではないようです。選択が適切でない場合でも、asp.dll などを選択しない方がよいことに注意してください。自分でテストできます
この変更を行った後、http://www.test.com/data/dvbbs6.mdb などのデータベースをダウンロードします。と表示されます(404や500などのエラー)
8: .net を使用する利点
Dongwang の Mu Niao は、ファイルの違法ダウンロードを防止する WBAL アンチホットリンク ツールを作成しました。詳細については、http://www.9seek.com/WBAL/ にログインしてください。
ただし、これはローカル以外のダウンロードを防止するだけであり、データベースのダウンロードを真に防止する機能はありません。ただし、この方法は方法 5 とほぼ同じです。.NET ファイルをローカルにダウンロードできないように変更できます。
これらの方法のうち、一律に変更できるのは 7 番目と 8 番目の方法だけで、一度設定を変更すると、サイト全体のデータベースがダウンロードされないようにすることができます。他のいくつかの方法は、それぞれデータベース名と接続ファイルを変更する必要があります。さらに面倒ですが、バーチャルホストの友達の場合はこれしかできません。
実際には、6 番目の方法は 5 番目の方法を拡張したものであり、特別な機能を実現できます。ただし、.net をサポートしていないホストや面倒な設定が怖いホストの場合は、5 番目の方法を直接使用することをお勧めします。 6 番目の方法がデフォルトで使用されます。同じホストのフォーラムまたはゲストブックにコピーして接続し、クリックしてダウンロードすることで公開できます (そのような参照ページは同じホストからのものであるため)。
9. NTFS パーティションのファイル許可設定を使用します (percyboy による)
ASP.NET は ADO.NET を使用してデータベースにアクセスし、非常に一般的に使用されるローエンド データベースの 1 つである Access データベースには OleDb 接続を通じてアクセスできることはすでにわかっています。この資料では、ASP.NET で発生する可能性のあるいくつかのエラー プロンプトについて説明します。Access 2000 と Access XP で作成されたデータベース ファイルでは、アクセス エラーが発生した場合に異なるエラー プロンプトが表示されます。皆さんのお役に立てれば幸いです。もう 1 つの重要な点は、この記事を通じて、ASP.NET での Access データベース ファイルの NTFS アクセス許可設定について誰もが新たに理解できることを願っているということです。