Je programmment un site PHP qui permet aux utilisateurs de vous inscrire, et les utilisateurs enregistrés et non enregistrés peuvent entrer leurs noms d'utilisateur et mots de passe respectifs (par exemple Ensuite, mon script PHP envoie certains Ma question est la suivante:
Comment dois-je garder le nom d'utilisateur et les mots de passe en sécurité? strong> p>
Pour les utilisateurs non enregistrés, je oublie actuellement le nom d'utilisateur et le mot de passe et mettez le Et qu'en est-il des utilisateurs enregistrés? Je veux avoir tout de sécurité, mais je ne veux pas ennuyer l'utilisateur avec des invites de mot de passe toutes les 30 minutes d'inactivité. Est-il sécuritaire de chiffrer les informations d'identification telles que décrites Ici , mais sans le troisième mot de passe de l'utilisateur? Ou dois-je demander à l'utilisateur son mot de passe à chaque fois? P>
merci pour des réponses rapides, smith8h4ft code> -
j9hsbnuio code>) pour Site scolaire. p>
$ _ Post code> variables, téléchargements et analyse de la page Marques, faisant appel à une matrice:
MarkSDB = Array ("Sujet" => Array ("A", "B", "A", "C", ...) CODE>, et l'écrit reformaté. P>
marksdb code> dans
$ _ session code>. Lorsque l'utilisateur est inactif pour E.G. 30 minutes, MarkSDB est supprimé. Quelle est la sécurité de ces données dans
_ session code>? Et que diriez-vous des utilisateurs qui se connectent, affichent une fois la page et ne le visuez jamais, alors le script ne supprime pas le markSDB de la session? La session est-elle supprimée automatiquement ( gc.maxlifetime < / a>)? p>
@Justin ᚅᚔᚈᚄᚒᚔ: Je doute qu'ils ont une API, mais je peux leur demander, juste pour le cas
@Abid Hussain: Merci de liens très utiles. (Merci aussi pour les réponses).
Je vais jeter les informations d'identification des utilisateurs et ne disposerez que markdb code>, que je vais probablement jeter (après la déconnexion ou l'inactivité) - il est bon marché de récupérer des marques à nouveau en cas de besoin. P>
5 Réponses :
Le fichier de session est le côté serveur afin qu'il soit invisible pour les clients. Mais ils peuvent toujours affecter votre programme à utiliser une autre session si elles connaissent l'ID de la session. P>
Pour les utilisateurs enregistrés, vous pouvez stocker le mot de passe dans un dB ou un fichier après avoir chiffré une clé avec une clé que vous savez que vous savez (peut-être une nouvelle génération générée au hasard et stockée pour chaque utilisateur) P>
Non; Vous ne devriez pas chiffrer i> un mot de passe. Vous devriez hash i> it - donc même votre propre application ne peut pas l'inverser.
@Andrewbarber mais comment peut-il l'envoyer à l'autre site, à moins qu'il n'utilise aussi le même hachage aussi?
Tu viens de répondre à ta propre question.
Ensuite, la réponse est: "Vous gardez les informations d'identification des utilisateurs en sécurité en ne faisant pas ce que vous faites". En fait, l'OP violait la sécurité des utilisateurs en premier lieu en leur demandant des informations d'identification pour un autre site i>.
Les fichiers de session seront supprimés par le collecteur des ordures après un certain temps, mais une bonne règle de stockage de Si vous souhaitez permettre aux utilisateurs enregistrés des sessions plus longtemps, vous pouvez accomplir une page de page périodique avec JS (pas nécessairement pour rafraîchir la page .. Juste une demande asynchrone fera) ou peut-être même augmenter le temps de la session avec Une autre solution consiste à avoir le cookie infâme "Se souvenir de moi" Gardez les utilisateurs connectés. P>
Les mots de passe ne sont pas pour le déchiffrement. Chiffrer pour le secret. Hachage pour l'authentification. P> _session code> ne stocke que des données que vous souhaitez émettre à l'écran, c'est-à-dire que le mot de passe est Probablement pas quelque chose que vous voulez stocker à la session. Les fichiers de session peuvent être lus à partir du serveur et il est possible que certains utilisateurs néfastes puissent détourner la session et voir des choses qu'ils ne sont pas censées voir ou même voir un
var_dump ($ _ session) code>. P>.
ini_set code > Si accepté. Ce n'est pas nécessairement em> plus sûr de demander des mots de passe à plusieurs reprises. Cela dépend de la vulnérabilité du mot de passe lorsque vous vous demandez. P>
Tout dans la session est le serveur, il n'est donc pas accessible par d'autres. Cependant, les sessions peuvent être «détournées» comme expliqué ici . P>
Vous pouvez augmenter la longueur de la session dans votre php.ini ou utiliser des appels périodiques Ajax en état de fond pour garder la session en vie. Les sessions sont supprimées lorsqu'elles sont expirées par le serveur. P>
crypter un mot de passe afin qu'il puisse être déchiffré est généralement fronçonné sans cesse sauf s'il n'y a pas d'alternative. Avec cryptage, non seulement vous, mais également tout le monde avec accès à votre base de données et / ou code source peut récupérer les mots de passe. P>
Voir URL p>
http://phpsec.org/projects/guide/4.html p>
http: // www. Sitepoint.com/blogs/2004/03/03/notes-on-php-session-Security/ P>
http://talks.php.net/show/phpworks2004-php -Session-Security P>
http://segfaullabs.com/files/pdf/php-session -Security.pdf p>
moyen le plus sûr de créer des sessions dans PHP P>
a également lu fort> p>
Les sessions sont significativement plus sûres que, disent, cookies. Mais il est toujours possible de voler une session et donc le pirate informatique aura un accès total à ce qui est de cette session. Certaines façons d'éviter ceci sont la vérification de la propriété intellectuelle (ce qui fonctionne plutôt bien, mais est très faible et n'est donc pas fiable en soi) et utilise une nonce. Typiquement, avec une nonce, vous avez un "jeton" par page de sorte que chaque page vérifie que la dernière page de la page correspond à ce qu'elle a stockée. P>
Dans l'une ou l'autre des vérifications de sécurité, il existe une perte de convivialité. Si vous effectuez une vérification IP et que l'utilisateur est derrière un pare-feu intranet (ou une autre situation qui cause cela) qui ne contient pas de propriété intellectuelle constante pour cet utilisateur, ils devront se rééditer chaque fois qu'ils perdent leur IP. Avec une nonce, vous obtenez le toujours amusant "en cliquant sur le dos entraînera une pause" de la situation. P>
Mais avec un cookie, un pirate informatique peut voler la session simplement en utilisant des techniques de XSS assez simples. Si vous stockez l'identifiant de la session de l'utilisateur comme cookie, ils sont également vulnérables à cela. Donc, même si la session n'est pénétrable que de quelqu'un qui peut faire un piratage de niveau serveur (qui nécessite des méthodes beaucoup plus sophistiquées et généralement une certaine quantité de privilège, si votre serveur est sécurisé), vous aurez toujours besoin d'un niveau supplémentaire de vérification. sur chaque demande de script. Vous ne devez pas utiliser les cookies et Ajax ensemble, car cela en fait un peu plus facile d'aller totalement en ville si ce cookie est volé, car vos demandes Ajax peuvent ne pas obtenir les contrôles de sécurité sur chaque demande. Par exemple, si la page utilise une nonce, mais la page n'est jamais rechargée, le script ne peut être vérifiant que cette correspondance. Et si le cookie tient la méthode d'authentification, je peux maintenant aller en ville à faire de ma malheur à l'aide du biscuit volé et du trou Ajax. P>
Si le site scolaire n'expose pas une API pour cela (par exemple, Utiliser Oauth comme les sites Stackexchange font ), alors vos options sont limitées. P>
En règle générale, Il n'est jamais judicieux de garder les informations d'identification en clair de l'utilisateur plus longtemps que ce qui est absolument nécessaire fort>. Il existe des implications de sécurité pour toute façon possible que vous puissiez imaginer d'essayer de le faire (détournement de la session, clés volées, déchiffrement, etc.). P>
Une meilleure approche pourrait être de rendre le processus de téléchargement de marque strictement initié par l'utilisateur. Donnez-leur un bouton qui dit "Récupérer mes marques" et passerai le processus d'authentification, téléchargez les marques et jetez leurs informations d'identification. Chaque fois qu'ils "synchronisent", ils devraient avoir à authentifier. À moins que les marques ne changent de base périodique fréquente, il ne devrait pas y avoir aucune raison pour ne pas pouvoir télécharger toutes les informations dont vous avez besoin à la fois, puis le mettre en cache de manière sécurisée sur le serveur pour une utilisation ultérieure. P>
Le seul gros risque ici est la session du détournement, imo. Vous pouvez régénérer la session ID lorsque le privilège est modifié.