Ceci est un peu une question d'opinion, mais dans l'ensemble, quelles précautions de sécurité serait idéal pour un site Web basé sur PHP utilisant une base de données MySQL? Ce site comprend l'enregistrement et la connexion, et doit protéger les informations personnelles des utilisateurs.Quelles sont les choses les plus importantes à faire pour créer un site web PHP/MySQL sécurisé?
Répondre
Vous devez savoir les choses principales:
- Les utilisateurs sont stupides comme des singes. Ils cliquent n'importe quoi n'importe quand.
- HTTPS
- bonnes compétences de programmation
- HASH + sel
- bugs PHP
- Toutes les façons possibles de piratage sur le site web PHP et MySQL. Combattre le feu avec le feu.
Règle d'or du développement web sécurisé: Filtre d'entrée, Évasion sortie
Voici un bel article qui résume en fait: http://shiflett.org/blog/2005/feb/more-on-filtering-input-and-escaping-output
Les principaux problèmes sont les suivants:
injection SQL XSS lors de la sortie des données
Voici quelques liens:
How does the SQL injection from the "Bobby Tables" XKCD comic work?
How to prevent SQL injection with dynamic tablenames?
htmlentities() vs. htmlspecialchars()
Salting my hashes with PHP and MySQL
How should I ethically approach user password storage for later plaintext retrieval?
les lire, je l'espère vous suivre les conseils dans les nombreuses réponses.
Belle liste de liens. J'ai lu une bonne réponse sur SO il y a quelques jours concernant la bonne façon de hachage des mots de passe, mais je n'arrive pas à le trouver maintenant. Je suppose que j'aurais dû le préférer. – Herbert
C'est une question très vaste, et il y a des dizaines de livres uniquement écrits pour répondre à cette question, mais voici quelques choses importantes:
1- données d'entrée utilisateur jamais confiance (_GET et $ _POST) . Toujours assainir tout avant d'imprimer/enregistrer dans la base de données.
2- Évitez de concaténer les paramètres directement sur le SQL. Utilisez toujours $ db-> bindParam() ou une autre fonction similaire.
3- Ne stockez jamais les mots de passe en texte brut. Utilisez toujours un algorithme de hachage. Et pour être sûr, utilisez aussi un sel.
4- Toujours s'attendre à ce que le pire scénario se produise. Parce que ça va.
5- Lisez quelque chose à propos de XSS, CSRF. Et assurez-vous de protéger votre application contre ceux-ci.
6- Get expérimentés =)
Je l'ai fait énorme pour une raison ... J'espérais que cela pourrait donner à noobs comme moi une ressource générale sur où commencer à lancer des coups de poing: D – Ceya
Beaucoup de réponses est venu pendant que je tapais cela. Je suppose qu'ils tapent plus vite. :-p
Tous sont de bonnes réponses et je ne sais pas comment vous choisirez le meilleur, mais la plupart sont à peu près les mêmes.
NE JAMAIS CONSERVER LES MOTS DE PASSE EN TEXTE PLAIN. Utilisez les algorithmes SHA-2 avec un sel . Rangez le hachis et le sel.
Ne faites jamais confiance à l'utilisateur. Désinfectez tout ce qui se trouve dans la base de données avant de la stocker ET à chaque fois que vous l'utilisez.
Utilisez des instructions préparées. Regardez dans PDO.
Utilisez HTTPS lorsque cela est possible.
Voici quelques éléments à ne pas perdre de vue. Le plus important de tous Étudiez-vous @ss off. :-)
- 1. HTML - Quelles sont les fonctionnalités d'accessibilité les plus importantes?
- 2. Quelles sont les choses les plus importantes que je dois savoir pour passer au développement Silverlight
- 3. Quelles sont les commandes importantes de Ruby?
- 4. Quelles sont les violations de PMD les plus importantes?
- 5. Business Intelligence: Quelles sont les API les plus importantes pour créer une application Java BB?
- 6. Quelles sont les parties les plus importantes du framework .NET pour un débutant?
- 7. Quelles sont les propriétés les plus importantes des langages de programmation pour vous?
- 8. Quelles sont les étapes à suivre pour créer une version Web mobile du site Web?
- 9. Quelles sont les choses coûteuses à implémenter en PHP sur un grand site de réseautage social?
- 10. Importantes vidéos envoyées via un site Web
- 11. Quelles sont les choses à développer dans Mac OS?
- 12. Quelles sont les métriques les plus importantes lors de la surveillance d'openDJ?
- 13. Quelles sont les fonctionnalités importantes (les plus courantes) de Silverlight 4.0
- 14. Quelles sont les considérations importantes lors des tests de backend?
- 15. Quelles sont les applications économiquement importantes de l'apprentissage automatique?
- 16. Quelles sont les choses nécessaires pour devenir bon architecte technique
- 17. Quelles sont les plateformes les plus matures à ce jour?
- 18. Quelles sont les choses de base nécessaires pour créer un projet dans Java
- 19. Développer un site Web sécurisé
- 20. les parantheses sont-elles importantes?
- 21. Quelles sont les choses que vous devez faire pour faire fonctionner un panneau avec un gestionnaire de disposition nul?
- 22. Quelles sont mes options pour créer une application iPhone à partir d'un site Web PHP existant?
- 23. Quelles sont les exceptions les plus dérivées?
- 24. Quelles sont les choses à considérer lorsque d'autres sites utilisent des scripts directement depuis votre site?
- 25. Quelles sont les options pour les lecteurs FLV pour l'intégration de vidéos sur un site professionnel?
- 26. Quelles sont les pratiques CSS les plus courantes?
- 27. Quelles sont les exigences pour tester un site Web en utilisant jquery.get()?
- 28. Limites les plus importantes du framework Entity
- 29. Quelles sont les étapes pour créer un fichier ipa?
- 30. Quelles sont les bonnes techniques pour organiser JS inclut pour un grand site Web?
Vous devez également quitter l'entrée, en particulier la saisie dans la base de données. – Johan