web-dev-qa-db-fra.com

Dois-je stocker des articles de blog dans une base de données? Et comment continuer à publier des messages?

J'essaie de créer un blog simple à partir de zéro, mais il me semble que je ne devrais probablement pas avoir un tas de pages html statiques auxquelles je renvoie, d'autant plus que je veux que la page d'accueil soit une cascade d'aperçus de chaque Publier. Je pensais donc que je stockerais les articles dans une base de données, et je récupérerais simplement des parties pour la page d'accueil, puis le tout pour la page de chaque article. Mais en tant que débutant, j'ai deux problèmes.

La première est que je ne sais pas si c'est une bonne pratique ou ce que quelqu'un fait réellement. Chaque fois que je vois des exemples ou des tutoriels sur l'utilisation des bases de données, il contient toujours des données très courtes comme le nom et l'adresse et le nombre d'enfants. Jamais un article de blog entier. Et aussi pas les photos qui iraient à l'intérieur du poste. Existe-t-il une autre façon de stocker toutes ces informations? Conservez-vous peut-être des noms de fichiers dans la base de données? Je suis particulièrement préoccupé par les images, je ne sais pas comment cela fonctionne.

Le deuxième problème est une fois que tout est configuré et en ligne, je ne sais pas comment continuer à le mettre à jour. Est-ce que je ferais un POST route à laquelle seul je peux accéder? Cela ressemble à un risque pour la sécurité pour moi.

Pardonnez mon ignorance, je suppose que c'est juste une question si simple que je ne trouve rien qui y réponde explicitement. Je ne connais pas les bons noms pour demander assez bien, donc je cherche juste quelques bonnes pratiques.

6
Cordello

Vous semblez créer un système de gestion de contenu (CMS). De nombreux systèmes de ce type existent déjà et la majorité stocke le contenu dans une base de données.

Le fait que le contenu puisse être assez volumineux n'est pas un problème. La base de données peut gérer de grandes quantités de texte brut ou de données binaires par entrée sans problème. Le point important à retenir est qu'il n'a pas de sens d'imposer une taille maximale pour les articles de blog, donc dans une base de données SQL, nous ne pouvons pas déclarer la colonne avec le type VARCHAR(10000) ou quelque chose comme ça. Au lieu de cela, vous voulez probablement un type TEXT ou BLOB de taille illimitée. Pour les types TEXT, vous devrez choisir un encodage de texte approprié - de nombreuses bases de données ne sont pas tout à fait compatibles Unicode.

Certains CMSes gèrent les ressources statiques comme les images séparément du contenu de la page. Par exemple. Wordpress permet à l'utilisateur de télécharger des images et d'autres fichiers dans le /wp-content/ dossier. Les demandes de ces ressources peuvent être traitées directement par le serveur HTTP. C'est plus rapide que d'acheminer la demande via le CMS.

Un CMS a toujours une interface de gestion où vous pouvez vous connecter, configurer le système et créer et modifier du contenu. Cela devrait nécessiter une connexion (par exemple OpenAuth ou un mot de passe sur HTTPS). Le backend CMS vérifie chaque demande qui affecterait les paramètres ou le contenu pour une autorisation appropriée: l'utilisateur doit être connecté et doit avoir les droits nécessaires, si le CMS comprend un système de gestion des droits. Cela peut être fait en toute sécurité, mais il est facile de faire des erreurs fatales, surtout si vous n'avez jamais créé d'application Web auparavant. Les problèmes les plus courants sont les vulnérabilités d'injection SQL ou les bogues dans la vérification des autorisations pour chaque action protégée. Si le site autorise la génération de contenu par des utilisateurs non fiables (commentaires, barre de recherche ou page 404 affichant l'URL manquante), des attaques XSS sont également possibles.

Ces dernières années, les blogs statiques sont devenus de plus en plus populaires. Ici, aucun CMS ne s'exécute sur le serveur Web. Puisqu'il n'y a pas de code, il ne peut y avoir aucun problème de sécurité dans notre code. Au lieu de cela, tous les fichiers HTML ont été créés sur un autre ordinateur, puis téléchargés sur le serveur Web. L'outil qui crée les fichiers HTML à partir du contenu peut être arbitrairement complexe. J'ai écrit mon propre moteur de blog statique imitant Jekyll, et il prend en charge un système de balises, publie des extraits sur la page d'accueil, des flux RSS, des thèmes,…. Les seules fonctionnalités qu'un système statique ne peut pas avoir sont des fonctionnalités dynamiques comme les commentaires des utilisateurs ou une barre de recherche, du moins pas sans l'aide de fournisseurs tiers.

11
amon