Maison > développement back-end > C++ > Comment puis-je accéder en toute sécurité à un fichier partagé sur un domaine distant non approuvé à l'aide de chemins UNC et des informations d'identification fournies ?

Comment puis-je accéder en toute sécurité à un fichier partagé sur un domaine distant non approuvé à l'aide de chemins UNC et des informations d'identification fournies ?

Linda Hamilton
Libérer: 2025-01-27 14:11:37
original
589 Les gens l'ont consulté

Accès sécurisé aux fichiers partagés à distance : un guide utilisant les chemins et les informations d'identification UNC

Ce guide aborde le défi de l'accès sécurisé aux fichiers partagés résidant sur un domaine distant non fiable à l'aide de chemins UNC et d'informations d'identification fournies, sans recourir à des méthodes moins sécurisées telles que le mappage de lecteur ou la duplication d'informations d'identification.

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

Le problème : l'accès aux ressources partagées entre domaines nécessite souvent une authentification. Les méthodes traditionnelles présentent des risques pour la sécurité.

La solution : l'WNetUseConnectionAPI Win32

WNetUseConnection offre une alternative sécurisée. Il permet la connexion à un partage distant via son chemin UNC à l'aide des informations d'identification spécifiées, sans créer de mappage de lecteur persistant. Cela minimise l'exposition à la sécurité associée aux lecteurs mappés.

Comment ça marche :

L'API nécessite :

  • Structure NETRESOURCE : Détails sur la ressource distante (type, nom, etc.). Surtout, cela inclut le chemin UNC.
  • Identifiants : Nom d'utilisateur et mot de passe.
  • Drapeaux : Contrôlez le comportement de la connexion (par exemple, la gestion des erreurs).

En fournissant le chemin UNC et les informations d'identification, WNetUseConnection établit une connexion temporaire. Le fichier est alors accessible comme s'il était local. Une fois terminé, la connexion doit être explicitement fermée en utilisant WNetCancelConnection2.

Exemple d'implémentation C# :

Le code C# suivant illustre l'utilisation de WNetUseConnection et 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>
Copier après la connexion

N'oubliez pas de gérer les erreurs potentielles (par exemple, accès refusé, informations d'identification non valides) de manière rigoureuse. Déconnectez-vous toujours en utilisant WNetCancelConnection2 lorsque vous avez terminé pour libérer des ressources. Cette approche offre une méthode plus sécurisée pour accéder aux fichiers partagés à distance par rapport aux techniques traditionnelles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal