web-dev-qa-db-ja.com

ブログの投稿をデータベースに保存しますか?そして、どのように私は投稿を続けますか?

私はシンプルなブログを一から作成しようとしていますが、特にホームページをそれぞれのプレビューのカスケードにしたいので、リンクする静的なHTMLページの束はおそらくないはずです。役職。投稿をデータベースに保存し、ホームページのパーツを取得してから、個々の投稿のページ全体を取得することを考えていました。しかし、初心者として、私には2つの問題があります。

1つ目は、それが良い習慣なのか、誰かが実際に何をしているのかわからないということです。データベースの使用例やチュートリアルを見るたびに、名前や住所、子供の数などの非常に短いデータが常に含まれています。ブログ投稿全体を決して。また、投稿の内部に表示される写真も含まれていません。それで、そのすべての情報を保存する別の方法はありますか?データベースにファイル名を保存しているのでしょうか?私は特に画像に関心がありますが、それがどのように機能するのかわかりません。

2番目の問題は、すべてがセットアップされてオンラインになると、どうやって更新し続けるのかわかりません。自分だけがアクセスできるPOSTルートを作成しますか?それは私にとってセキュリティリスクのように思えます。

私の無知を許してください、私はそれを明確に答える何かを見つけることができないほど単純な質問だと思います。適切な名詞を十分に尋ねることができないので、いくつかのベストプラクティスを探しています。

6
Cordello

コンテンツ管理システム(CMS)を作成しているようです。そのようなシステムの多くはすでに存在しており、大多数はデータベース内にコンテンツを格納しています。

コンテンツがかなり大きいかもしれないという事実は問題ではありません。データベースは、エントリごとに大量のプレーンテキストまたはバイナリデータを問題なく処理できます。覚えておくべき重要な点は、ブログ投稿の最大サイズを強制することは意味がないため、SQLデータベースでは、タイプVARCHAR(10000)などの列を宣言することはできません。代わりに、おそらくサイズが無制限のTEXTまたはBLOBタイプが必要です。 TEXTタイプの場合、適切なテキストエンコーディングを選択する必要があります。多くのデータベースは、Unicodeに完全には対応していません。

一部のCMSは、画像などの静的リソースをページコンテンツとは別に処理します。例えば。 Wordpressを使用すると、画像やその他のファイルを/wp-content/フォルダ。これらのリソースに対する要求は、HTTPサーバーによって直接処理できます。これは、CMSを介してリクエストをルーティングするよりも高速です。

CMSには常に管理インターフェースがあり、ログインしてシステムを構成し、コンテンツを作成および編集できます。これにはログインが必要です(例:HTTPS経由のOpenAuthまたはパスワード)。 CMSバックエンドは、設定またはコンテンツに影響を与える各リクエストを適切に承認するためにチェックします。CMSに権限管理システムが含まれている場合、ユーザーはログインし、必要な権限を持っている必要があります。これは安全に行うことができますが、特に以前にWebアプリケーションを作成したことがない場合は、致命的な間違いを犯しがちです。最も一般的な問題は、SQLインジェクションの脆弱性、または保護された各アクションの承認チェックのバグです。サイトが信頼できないユーザー(コメント、検索バー、または不足しているURLを表示する404ページ)によるコンテンツの生成を許可している場合、XSS攻撃も可能です。

近年、静的ブログはますます人気が高まっています。ここでは、CMSはWebサーバーで実行されません。コードがないため、コードにセキュリティ上の問題はありません。代わりに、すべてのHTMLファイルが別のコンピューターで作成され、Webサーバーにアップロードされました。コンテンツからHTMLファイルを作成するツールは、任意に複雑にすることができます。私はJekyllを模倣した独自の静的ブログエンジンを作成し、タグシステム、ホームページへの抜粋の投稿、RSSフィード、テーマ設定などをサポートしています。静的システムが持つことのできない唯一の機能は、ユーザーのコメントや検索バーなどの動的な機能であり、少なくともサードパーティのプロバイダーを使用しない限りは不可能です。

11
amon