2016-12-03 15 views
0

私のオンラインショップで電子書籍を販売しています。クローラやハッカー向けにサーバー上のコンテンツを非表示にする方法

http://www.my_domain.com/media/books/b476de3dd02e72a727bb762371d6bbad.pdf 

すべてのファイルが名前を推測することができ、ユーザを防ぐためにb476de3dd02e72a727bb762371d6bbadのような不可解な名前を持っている、としませmy_book_name.pdf:買い手が終了したとき、彼はこのようなダウンロードリンクを電子メールを取得します。

私はそれをクロールし、検索結果にそれを表示するようにクローラを防ぐために、以下のいる robots.txt

User-agent: * 
Disallow: /media/books/ 

私は、クローラそれを注意するが、なければならないことができることを知っています。

誰かがより良い解決策を知っていますか?それを行うための一般的な方法は何ですか?

P.S.私は、ユーザーがパスワードを入力するなどしてファイルにアクセスするよう強制したくありません。

答えて

2

私が正しく理解している場合、あなたのウェブサイトには大きなアクセス制御の問題があります。 1人のユーザーが電子ブックを購入し、ソーシャルメディアでリンクを共有するとどうなりますか?

ファイルをダウンロードするユーザーが実際にファイルをダウンロードしたことを確認する必要があります。つまり、認証が必要です。ファイルをサーバー上で直接参照するべきではありません。これは、許可を実装できないためです。

あなたが購入したデジタル商品をダウンロードするには、ウェブショップにユーザー名/パスワードでログインするのがかなり一般的だと思いますが、しかし、あなたはそれをしたくないと思っていますが、依然としてユーザーを認証する必要があります。

あなたができることは、誰かが何かを購入したときに、暗号的にランダムなトークン(つまり大きなランダムな文字列)を作成してデータベースに格納し、トークンとともにダウンロードできるファイルにリンクし、また、ユーザーがいる場合はユーザー。トークンを使用できる時間を制限するタイムスタンプも必要です。

次に、ユーザがファイルを取得するための/media/books/download/<<token>>(または同じトークンを持つ複数のファイルを許可するための/media/books/download/<<token>>/<<filename>>)のようなエンドポイントを持つことができます。要は、同じ本を購入したユーザーごとに違うし、時間制限もあるということだ。許可されたダウンロード数を制限したり、複数のクライアントIPアドレスなどからトークンが使用されていないかどうかを検出して不正行為を検出したりすることができます。それは完璧ではありませんが、非常に特別な本を売っていない限り、おそらくほとんどの攻撃者を抑えることができます。 :)しかし、もしあなたがこれをすべてやっていなければ、それはファイルへの直接リンクよりずっと良いでしょう。

これはまた、本質的に検索エンジンの問題を解決します。

0

あなたが話しているこれらのファイルのディレクトリ内に配置された.htaccessファイルでは、以下のオプションを使用することをお勧めします。

<FilesMatch ".pdf$"> 
Header set X-Robots-Tag "index, noarchive, nosnippet" 
</FilesMatch> 

robots.txtファイルには、彼らだけが許可しないを使用して行くことを許されていない彼らのユーザーエージェント:,によって識別される検索エンジンを、伝える、いわゆるクローラのディレクティブが含まれていますし、どこにすることができます(とすべき)は、Allow:を使用し、サイトマップでそれらを指すことによって移動します。

+0

ありがとうございます。それは正確に何ですか? – user7128548

関連する問題