首頁 >後端開發 >C++ >如何使用UNC路徑安全地在遠程,未經信任的域上安全訪問共享文件並提供憑據?

如何使用UNC路徑安全地在遠程,未經信任的域上安全訪問共享文件並提供憑據?

Linda Hamilton
Linda Hamilton原創
2025-01-27 14:11:37583瀏覽

>安全地存取遠端共用檔案:使用UNC路徑和憑證

的指南

>本指南解決了使用UNC路徑和提供的憑證穩固存取居住在不信任網域上的共用檔案的挑戰,而無需求助於較低安全性的方法,例如磁碟機對應或憑證重複。

How can I securely access a shared file on a remote, non-trusted domain using UNC paths and provided credentials?

問題:跨域中存取共享資源通常需要身份驗證。傳統方法構成安全風險。

解決方案:

win32 apiWNetUseConnection

提供了一個安全的替代方案。它允許使用指定的憑證透過其UNC路徑共用連接,而無需建立持久的驅動映射。 這樣可以最大程度地減少與映射驅動器相關的安全敞口。 WNetUseConnection

它的運作原理:

API需要:

  • NetResource結構:有關遠端資源(類型,名稱等)的詳細資訊。 至關重要的是,這包括UNC路徑。 >
  • 憑證:使用者名稱和密碼。 >
  • 標誌:控制連接行為(例如,錯誤處理)。
  • 透過提供UNC路徑和憑證,
建立臨時連線。 然後,該文件可以像本地一樣存取。 完成後,應使用

>。 WNetUseConnectionc#實作範例:WNetCancelConnection2

以下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>
>斷開連線。 與傳統技術相比,這種方法提供了一種更安全的方法來存取遠端共享文件。

以上是如何使用UNC路徑安全地在遠程,未經信任的域上安全訪問共享文件並提供憑據?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn