ログインしたユーザーが製品の写真をアップロードできるようにする小さな Web アプリを構築しています。私は正しく構築しようとしていますが、過去にいくつかの単純な実装を行った後、アップロードされたすべてのコンテンツをパブリック フォルダーに追加することにしました。
\app (public folder)
-\index.php
\includes
\config
\uploads
これにより、悪意のあるユーザーが PHP ファイルをアップロードできた場合、そのファイルに到達できず、サーバーから提供されなくなります。
そうは言っても、これらの写真を Web ページに表示するにはどうすればよいでしょうか? これを行う最善の方法は何ですか?過去に、「getImage.php?id=555&c=44j54k3h5」のような ID パラメータ (および、ユーザーが単に ID を推測するのを避けるために生成された値のハッシュ) を取る getImage.php ファイルを使用しました。サーバーは、DB 内の画像情報 (実際のパス) を取得してコンテンツをロードし、ヘッダーを再構築して、画像を送信します。
この方法に関してセキュリティ上の懸念はありますか? 可愛くする方法ってありますか?/images/imagename.jpg を検索して getImage.php ファイルに送信する htaccess 書き換えルールを使用すると、セキュリティ ホールが追加されますか? ベスト プラクティスに関するアドバイスをいただければ幸いです。