0

私は次のようなパスでアプリケーションのログを書いています:-

"C:\Folder1\Folder2\Myfile.txt" (設定可能)

このファイルが存在しない場合は、コード内にフォルダー構造とファイルを作成しています (C ドライブがない場合、ログ ディレクトリが存在しないというメッセージが表示されます)。

コード レビューで、同僚は、コードを使用してフォルダーとファイルを作成するのではなく、クライアントにファイルの作成を依頼し、このファイルに対して書き込み操作のみを実行するように依頼するべきだと言いました。

彼は、これにはセキュリティ上の問題があると言っていますが、何がわからないので、ここに投稿することを考えました.

ファイルが存在しない場合にファイルを作成するか、インストールごとに作成するようにクライアントに依頼するかを決定するのを手伝ってください。

最初のアプローチのセキュリティへの影響は何ですか?

4

4 に答える 4

0

私が見ているセキュリティの問題は、Webアプリケーションがディレクトリ内のファイルにアクセスして書き込む機能です(前述のように構成可能です)。

アプリプールが実行されているアカウントに与えられたアクセス許可を確認して、アクセスを確認するには

またはコードを介してこれを参照してください

于 2013-02-25T09:37:47.707 に答える
0

本質的に安全でないコードはありません。これはすべて、コードの残りの部分がどのように見えるかによって異なりますが、一般的な経験則として、アプリケーションがアクセスできるファイルとアクセス方法を制限する必要があります。アプリケーションの機能を損なうことなく、これを可能な限り制限してください。

これに起因する可能性のあるセキュリティの脆弱性は、ユーザーが読み取ってはいけないファイルを読み取ったり、重要なファイルに書き込んで破損させたりすることを可能にします。たとえば、ファイル パスがユーザー入力を使用して作成されている場合、ユーザーはパスを変更して、アクセスが許可されていないファイルにアクセスすることができます。次のようなパスを作成する場合:

string filePath = "c:\\mysafefolder\\" + fileName;

ユーザーは相対パスを入力します。たとえば、ユーザー..\Windows\Passwords.txtは実質的に にアクセスできますc:\windows\passwords.txt

を除くファイル システムの一部へのアクセスをブロックするようにアプリケーションを構成するとmysafefolder、シークレット ファイルを読み取ろうとして失敗します。

これは、発生する可能性があることと、アプリケーションのアクセス許可を制限することをお勧めする理由のほんの一例です。この時点であなたのコードは完全に安全かもしれませんが、パーミッションを制限することは先を考えてのことです。

于 2013-02-25T12:23:52.277 に答える
0

はい、問題が発生する可能性があります。あなたのプログラムは、インタラクティブなユーザー アカウントで実行される可能性が高いため、それに課せられた UAC 条件の対象となります。

これが単なるログ ファイルである場合の 1 つの方法は、一時ファイルを使用することです。

http://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename.aspx

これは、ファイルの書き込みを許可するログオン ユーザーのローカル領域に作成する必要があります。

于 2013-02-25T09:23:19.630 に答える
0

書き込みの問題は、Cルート フォルダーで作成しようとしているユーザーが、そこに作成する権限を持っていない可能性があることです。ユーザーが常に管理者であると想定しないでください。

また、これは問題になるWindowsのUACの問題です。

于 2013-02-25T09:19:26.517 に答える