J’aimerais savoir ce que les gens considèrent comme les meilleures pratiques pour sécuriser les sections Admin des sites Web, en particulier du sharepoint vue de l’authentification / access.
Bien sûr, il y a des choses évidentes, comme l’utilisation du protocole SSL et la journalisation de tous les access, mais je me demande où, au-delà de ces étapes de base, les utilisateurs considèrent la barre à définir.
Par exemple:
Jusqu’à présent, les suggestions des répondeurs incluent:
Ce sont toutes de bonnes réponses … J’aime généralement append quelques couches supplémentaires pour mes sections administratives. Bien que j’ai utilisé quelques variantes sur un thème, celles-ci incluent généralement l’un des éléments suivants:
Si le site Web nécessite une connexion à la fois pour les activités régulières et pour les administrateurs, par exemple un forum, j’utiliserai des identifiants distincts qui utilisent la même firebase database d’utilisateurs. Cela garantit que XSRF et le vol de session ne permettront pas à l’attaquant d’accéder aux zones administratives.
En outre, si la section admin se trouve dans un sous-répertoire distinct, il peut être utile de sécuriser celui avec authentification du serveur Web (.htaccess dans Apache par exemple), puis quelqu’un a besoin de ce mot de passe et du mot de passe utilisateur.
Obscurcir le chemin d’administration ne donne quasiment aucun gain de sécurité – si quelqu’un connaît des données de connexion valides, il est probablement aussi capable de trouver le chemin de l’outil d’administration depuis qu’il l’a chemin aussi).
Une protection par force brute, telle que bloquer l’adresse IP de l’utilisateur après trois échecs de connexion ou nécessiter un CAPTCHA après un échec de connexion (pas pour la première connexion car cela est extrêmement ennuyeux pour les utilisateurs légitimes) pourrait également être utile.
Oui, après l’avoir écrit, je me rends compte que cette réponse peut être résumée comme “rien de spécial pour la connexion administrateur, ce sont toutes les fonctions de sécurité qui doivent être utilisées pour toute connexion”.
Si vous n’utilisez qu’un seul identifiant pour les utilisateurs disposant à la fois des privilèges d’utilisateur et des privilèges d’administrateur, regénérez leur identifiant de session (que ce soit dans un cookie ou un paramètre GET ou autre …) en cas de modification du niveau de privilège … au moins.
Donc, si je me connecte, fais un tas de choses normales pour l’utilisateur, puis visite une page d’administration, régénère mon identifiant de session. Si je navigue ensuite depuis une ou plusieurs pages d’administration vers une page utilisateur normale, régénérez à nouveau mon identifiant.
Avoir un bon mot de passe administrateur.
Pas "123456"
mais une suite de lettres, chiffres et caractères spéciaux assez longs, disons 15-20 caractères. Comme "ksd83,'|4d#rrpp0%27&lq(go43$sd{3>"
.
Ajoutez une pause pour chaque vérification de mot de passe pour empêcher une attaque par force brute.
Voici quelques autres points à considérer:
Nous utilisons l’ Windows Authentication
pour l’access administrateur. C’est le moyen le plus pratique de protéger les zones d’administration tout en gardant l’authentification séparée de ce qui s’applique aux utilisateurs finaux généraux. L’administrateur système gère les informations d’identification de l’access de l’utilisateur Admin et applique les stratégies de mot de passe sur le compte d’utilisateur du domaine.
La méthode la plus ssortingcte consiste à avoir deux “fermes” différentes, y compris des bases de données, des serveurs et tout le rest, et à déplacer les données d’une batterie à l’autre. Les systèmes les plus modernes à grande échelle utilisent cette approche (Vignette, SharePoint, etc.). On parle généralement de différentes étapes “édition” -> “aperçu” -> “livraison”. Cette méthode vous permet de traiter le contenu / config de la même manière que vous traitez le code (dev-> qa-> prod).
Si vous êtes moins paranoïaque, vous pouvez avoir une seule firebase database, mais seulement votre section admin est disponible sur les serveurs de “modification”. Je veux dire, seuls les scripts / fichiers d’édition sont placés sur le serveur de assembly.
Naturellement, la phase d’édition ne doit être disponible que sur un intranet local et / ou en utilisant un VPN.
Cela peut sembler exagéré et ne constitue peut-être pas la solution la plus simple pour tous les cas d’utilisation, mais c’est certainement la manière la plus robuste de faire les choses.
Notez que des choses comme “avoir des mots de passe admin forts” sont agréables, mais laissez votre administrateur ouvert à tous les types d’atsortingbuts.
Cela dépend beaucoup du type de données que vous souhaitez protéger (exigences légales et autres).
Beaucoup de suggestions concernent l’authentification. Je pense que vous devriez simplement envisager d’utiliser l’authentification OpenId / Facebook comme identifiant. (Ils dépenseront probablement plus de ressources sur la sécurité de l’authentification que vous)
Enregistrez les modifications ainsi que la mise à jour des valeurs dans la firebase database. De cette façon, vous pouvez annuler les modifications depuis l’utilisateur X ou entre les dates X et Y.
Je n’ai pas remarqué que quelqu’un mentionne le stockage / validation du mot de passe administrateur. S’il vous plaît s’il vous plaît s’il vous plaît ne stockez pas le PW en texte brut, et même pas quelque chose qui peut être inversé – utilisez quelque chose comme un hash MD5 salé pour que quelqu’un récupère le mot de passe stocké tout ce qui est terriblement utile, à moins qu’ils aient aussi votre projet de sel.
Ajoutez un champ de mot de passe et une question de sécurité que l’administrateur connaîtra, par exemple quel était le nom de votre première petite amie, ou répartissez les questions de manière aléatoire à chaque fois que vous consultez le panneau d’administration.
Peut-être que vous pourriez toujours mettre la section d’administration dans un grand répertoire, par exemple
Mais ce n’est pas vraiment bon.
Vous pourriez peut-être inclure une chaîne de requête dans la page d’accueil, par exemple:
Le nom d’utilisateur et le mot de passe apparaissent alors.