リモート共有ファイルに安全にアクセス: UNC パスと資格情報を使用するガイド
このガイドでは、ドライブ マッピングや資格情報の複製などの安全性の低い方法に頼ることなく、UNC パスと提供された資格情報を使用して、リモートの信頼できないドメインにある共有ファイルに安全にアクセスするという課題に対処します。
問題: ドメイン間で共有リソースにアクセスするには、多くの場合認証が必要です。従来の方法ではセキュリティ上のリスクが生じます。
解決策: WNetUseConnection
Win32 API
WNetUseConnection
は安全な代替手段を提供します。これにより、永続的なドライブ マッピングを作成せずに、指定された資格情報を使用して UNC パス経由でリモート共有に接続できるようになります。 これにより、マップされたドライブに関連するセキュリティ上の危険が最小限に抑えられます。
仕組み:
API には以下が必要です:
UNC パスと資格情報を指定することにより、WNetUseConnection
は一時的な接続を確立します。 ファイルはローカルであるかのようにアクセスできるようになります。 完了したら、WNetCancelConnection2
.
C# 実装例:
次の C# コードは、WNetUseConnection
と WNetCancelConnection2
の使用方法を示しています。
<code class="language-csharp">using System.Runtime.InteropServices; // ... other namespaces ... public class RemoteFileAccess { // ... (NETRESOURCE structure and error codes as before) ... [DllImport("Mpr.dll")] private static extern int WNetUseConnection(IntPtr hwndOwner, ref NETRESOURCE lpNetResource, string lpPassword, string lpUserID, int dwFlags, string lpAccessName, string lpBufferSize, string lpResult); [DllImport("mpr.dll")] private static extern int WNetCancelConnection2(string lpName, int dwFlags, bool fForce); public static bool ConnectToRemoteFile(string remoteUNC, string username, string password) { NETRESOURCE nr = new NETRESOURCE { lpRemoteName = remoteUNC, dwType = RESOURCETYPE_DISK }; int ret = WNetUseConnection(IntPtr.Zero, ref nr, password, username, 0, null, null, null); return ret == NO_ERROR; } public static bool DisconnectFromRemoteFile(string remoteUNC) { int ret = WNetCancelConnection2(remoteUNC, 0, false); return ret == NO_ERROR; } // ... (GetError function as before) ... const int NO_ERROR = 0; const int ERROR_ACCESS_DENIED = 5; const int ERROR_BAD_NET_NAME = 53; const int ERROR_INVALID_PASSWORD = 1326; const int RESOURCETYPE_DISK = 1; }</code>
潜在的なエラー (アクセス拒否、無効な資格情報など) を確実に処理することを忘れないでください。 リソースの解放が終了したら、必ず WNetCancelConnection2
を使用して切断します。 このアプローチは、従来の技術と比較して、リモート共有ファイルにアクセスするためのより安全な方法を提供します。
以上がUNCパスと提供された資格情報を使用して、リモートの非トラストドメインで共有ファイルに安全にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。