Question

J'ai posé une question similaire un certain temps, mais tous les réponses proposaient qu'OpenID ce qui est agréable mais il ne fonctionne pas avec les services qui nécessitent une authentification qui ne l'utilisent pas (comme EventBrite).

dis que je veux créer une application qui liste vos événements de brite d'événements, et leur analyse (qui comprend Eventbrite). Toute personne peut vous inscrire à ce service à la liste des événements. Mais depuis EventBrite ne pas OpenID à authentifier, je dois obtenir en quelque sorte le nom d'utilisateur et mot de passe pour EventBrite.

Des solutions possibles sont:

  1. les informations d'identification de magasin dans YAML comme celui-ci . Facilement piratable.
  2. utilisateur entres dans les informations d'identification dans un formulaire sur mon site, je enregistrer les authentifications à ma base de données, et de les utiliser pour se connecter à EventBrite. Facilement piratable.
  3. utilisateur entres dans les informations d'identification et je les transmettre directement à EventBrite sans enregistrer, et je sauvegarde les cookies d'en-tête de réponse à la base de données, et quand ils arrivent à expiration, ont les connecter à nouveau. Est-ce facile piratable?

Ce service hypothétique veut également vérifier automatiquement les événements (par l'intermédiaire dire Cron), donc il ne dépend pas de l'utilisateur va sur mon site via le navigateur. Ainsi, les cookies ou credientials doivent être stockés quelque part.

La chose est, après avoir demandé à ce question similaire à propos de la confidentialité et de la sécurité il semble que vous devriez jamais construire une application qui fait ce que je décris. Il doit y avoir un moyen de construire quelque chose comme ça va bien.

Quelle est cette façon? Qu'est-ce que je rate? Est-il correct d'aller avec # 3 et enregistrer les cookies (mais toujours besoin de l'utilisateur de soumettre leur email / mot de passe via un formulaire que j'envoie à Eventbrite)? Qu'est-ce qu'une solution acceptable au problème?

Était-ce utile?

La solution

Il n'y a pas un moyen sûr de le faire. Vous pouvez utiliser des solutions de contournement, mais qui est à son sujet.

  1. Le stockage des mots de passe dans YAML ou XML en texte clair est définitivement
  2. En fait, même les mots de passe et le stockage crypte est erroné. Votre demande aurait besoin d'un moyen de décrypter les mots de passe, de sorte que l'attaquant peut déchiffrer les mots de passe.
  3. La méthode recommandée pour les mots de passe magasin est Sel + Hash, mais parce qu'elle devient irrécupérable, il est inutile dans votre cas.
  4. En raison de 2 & 3, peu importe où vous stocker les informations d'identification des utilisateurs, vous êtes vulnérables.
  5. Le stockage des biscuits à la place des mots de passe est une meilleure idée. Mais encore une fois, cela implique le mot de passe en passant par votre site Web, ce qui est bon.

Compte tenu de votre situation, le stockage du cookie est une meilleure approche. Utilisez HTTPS partout, même sur votre site Web. Son idéal moins bien, et vous et vos utilisateurs doivent être conscients.

Autres conseils

Eventbrite a récemment publier une nouvelle documentation décrivant comment implémenter OAuth2.0 pour l'authentification utilisateur intersite . Je recommande d'utiliser notre javascipt basé OAuth2.0 widget de , qui stocke les jetons d'authentification de l'utilisateur dans le localStorage de leur navigateur par défaut. Étant donné que les jetons auth sont stockés dans le navigateur de l'utilisateur et sont empêchés d'être accessibles par d'autres domaines, il est peu probable qu'il y aurait des fuites de sécurité.

Le besoin de combos e-mail et mot de passe sont complètement évités dans ce schéma d'authentification.

La plupart des sites soutenir que la connexion directe avec le mot de passe en texte clair d'origine, vous devez obtenir, stocker et fournir aussi. Et je ne jamais vous faire confiance avec cela. Le problème avec votre concept est que vous avez besoin du mot de passe à donner à un tiers. La solution est de ne pas impliquer un tiers, par exemple mon navigateur est assez bon pour le stockage et le remplissage des mots de passe pour moi automatiquement (mon disque dur est protégé mot de passe trop). Et ils sont des dizaines d'autres applications de portefeuille de mot de passe aussi. Je ne gagnerait rien en vous inscrivant, en utilisant votre service.

Avant d'entrer dans les affaires d'un tel, pensez que vous allez être la cible n ° 1. Facebook, Google sont incroyablement paranoïaque à propos de la sécurité, passer beaucoup de temps, d'argent et d'efforts pour garder les connexions en toute sécurité. Avez-vous les mêmes ressources? Ensuite, vous êtes une meilleure cible. Aussi par le piratage de votre service, ils obtiennent immédiatement plusieurs comptes, mots de passe de vos utilisateurs, de voir aussi qui est toujours réutilisent son mot de passe.

Pour travailler avec l'API Eventbrite, je vous recommande veiller à ce que toutes les connexions sont sur SSL, et que vous authentifie à l'aide d'un user_key au lieu d'un nom d'utilisateur et mot de passe.

Plus d'informations sur l'authentification de l'API Eventbrite est ici: http://developer.eventbrite.com/ doc / auth /

Une fois connecté, les utilisateurs peuvent trouver leur user_key ici: http://www.eventbrite.com/userkeyapi

Cela devrait empêcher le nom d'utilisateur et mot de passe d'être intercepté sur le fil, ou lire à partir d'un magasin de données local.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top