2010-06-17 2 views
1

Excuses, c'est une question tragiquement simple qui ennuiera la plupart d'entre vous.Quel est le moyen le plus simple et le plus sûr d'enregistrer les données saisies par un utilisateur sur un site Web?

J'ai besoin de mettre en œuvre la plus simple "laissez votre e-mail et nous vous contacterons" page Web. La chose la plus simple que je puisse penser est de faire un formulaire HTML qui appelle un script PHP qui ajoute les données dans un fichier sur le serveur. Facile à mettre en œuvre, mais maintenant je me demande si c'est totalement piratable. Est-ce? Existe-t-il de meilleurs moyens évidents qui restent simples?

grâce

f

Répondre

1

Par hackable, voulez-vous dire que quelqu'un pourrait endommager votre fichier? Ou le lire? Ou...? Si je voulais faire ce que vous avez dit, je ferais ceci:

<?php 
if(isset($_POST['submit_button_name'])){ 
    $email = htmlentities($_POST['email_address_field_name'], ENT_QUOTES); 
    $handle = fopen("email_list.txt", "a"); 
    fwrite($handle, "\n".$email); 
    fclose($handle); 
} 
?> 

<form> ... </form> 

Il serait privé dans le sens où une personne ne sait pas où le trouver, et sûr parce que je l'ai utilisé les htmlentities () pour supprimer tout XSS possible.

+2

en fait vous ne pouvez pas avoir xss parce que c'est dans un fichier .txt. Bien que je serais inquiet d'écrire du code php qui pourrait être inclus dans une attaque avancée LFI. – rook

+0

Je suis préoccupé par quelqu'un qui accède à email_list.txt et qui vole des adresses e-mail, mais il semble que les commentaires ci-dessus comme cela devrait être gérable. BTW, y at-il un moyen évident pour quelqu'un d'accéder au code source de mon script php et donc savoir que j'économise des adresses e-mail dans email_list.txt? J'ai en quelque sorte supposé que cela se ferait de la même manière que l'on regarde le code source HTML d'une page dans un navigateur mais que l'on n'a pas pu répliquer cela. –

+0

@The Rook: ah, oui, bon point. @fred août: PHP est géré 'côté serveur', ce qui signifie qu'il est analysé sur le serveur; seul votre code côté client (par exemple HTML) sera visible par le public. – Andy

1

Il est bon, mais vous pouvez trouver une base de données complète ou SQLite une meilleure option. Assurez-vous de placer le fichier dans un endroit inaccessible aux autres utilisateurs (par exemple, en dehors de la racine du serveur Web ou dans un répertoire protégé), sinon tout le monde pourra voir les commentaires.

0

Quelle que soit la solution que vous choisissez (fichier, base de données, e-mail, etc.), la sécurité dépendra de la façon dont vous le mettre en œuvre:

  • Comment êtes-vous filtrent l'entrée?
  • Combien de soumissions autorisez-vous par adresse IP?
  • etc.
+0

Je ne filtre pas vraiment les soumissions d'entrée ou de limitation par adresse IP - mais elles semblent toutes deux être de bonnes idées. Rien d'autre? Jamais pensé que l'on devrait être si prudent pour quelque chose aussi simple - je suppose que c'est la beauté de l'apprentissage :) BTW, connaissez-vous des échantillons de code qui montrent un homme du métier (clairement pas moi) le feraient ? Je suppose que c'est un extrait de code assez commun pour la vie d'un site, et pourtant je ne suis pas tombé sur quelque chose d'aussi bien - je ne cherche probablement pas correctement.Je vous remercie! –

+0

Si vous utilisez un fichier, vous devez absolument le placer quelque part en dehors de la racine de votre site Web. – jeroen

1

Il y a quelques choses que vous pourriez faire. Tout d'abord, puisque vous enregistrez une adresse e-mail, vous pouvez simplement utiliser la fonction mail() de PHP pour envoyer un e-mail à un endroit centralisé. Cela ressemble à une page d'inscription bêta, et un fichier serait bien si vous n'avez pas de base de données disponible. Assurez-vous simplement que le fichier est stocké en dehors du dossier servi (au-dessus de public_html, par exemple).

Assurez-vous également que vous regex ou nettoyer les données afin que quelqu'un ne peut pas l'utiliser comme un formulaire zombie pour le spam. Il suffit de couper l'adresse email après le premier \ r \ n et ça va le réparer.

+2

Je n'ai pas reçu le commentaire "cut off". Qu'est-ce que ça va réparer? Et si je voulais deux paragraphes? – Artefacto

+0

Ah désolé, je n'ai pas compris que c'était juste un e-mail. – Artefacto

+0

Oui, juste sur les champs d'adresse e-mail, sinon il peut être rempli avec plusieurs adresses. Ce n'est pas un problème si vous n'utilisez pas mail(), très probablement, mais cela réduirait l'encombrement des pourriels dans votre fichier. – Jordan

Questions connexes