Mengakses fail kongsi jauh dengan selamat: Panduan menggunakan laluan UNC dan kelayakan
Panduan ini menangani cabaran untuk mengakses fail bersama yang tinggal di domain terpencil, tidak dipercayai menggunakan laluan UNC dan menyediakan kelayakan, tanpa menggunakan kaedah yang kurang selamat seperti pemetaan pemetaan atau duplikasi kredensial.
Penyelesaian: The
Win32 Api WNetUseConnection
menyediakan alternatif yang selamat. Ia membolehkan sambungan ke bahagian jauh melalui laluan UNC menggunakan kelayakan tertentu, tanpa membuat pemetaan pemacu yang berterusan. Ini meminimumkan pendedahan keselamatan yang dikaitkan dengan pemacu yang dipetakan. WNetUseConnection
API memerlukan:
. WNetUseConnection
WNetCancelConnection2
C# Contoh pelaksanaan:
dan
:
WNetUseConnection
WNetCancelConnection2
ingat untuk mengendalikan kesilapan yang berpotensi (mis., Akses ditolak, kelayakan tidak sah) dengan kuat. Sentiasa putuskan menggunakan
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; }
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengakses fail kongsi dengan selamat pada domain yang jauh dan tidak dipercayai menggunakan laluan UNC dan bukti kelayakan yang diberikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!