2016-10-16 19 views
1

私は画像をダウンロードするボタンを持つPHPウェブページを構築しています。私は署名されていないユーザーにこの画像を3回だけダウンロードするように制限したい。制限PHPのユーザIPアドレスによるダウンロード数

ユーザーはCookieを削除できるため、セッションとCookieのどちらも使用したくないです!

IPを使用したいので、グローバル変数$_SERVERを使用しましたが、ここでの問題はIPアドレスが変更可能であることです。それはダイナミックであり、毎回変化します。

だから何をすればよいですか?

+0

私はあなたが置いた制限に基づいてできるとは思わない。ただし、写真の枚数によっては、写真に時間制限を設定することもできます(つまり、24時間以内に3回以上ダウンロードされないようにする)。あなたが探しているのと同じことを達成するかもしれません。注意;これは、ユーザーが選択できる写真が多数ある場合にのみ機能します。 – Sablefoste

答えて

2

すべてのIPが動的であるとは限りません。これはISPによって異なります。あなたの問題はユーザーを一意に特定することです。ユーザーにログインさせることなく実行することは不可能です.IP、クッキー、セッション、localstorageにブラウザのフィンガープリンティングやストアトークンを行うクライアント側のスクリプトは、常にあなたの保護を乗り越えることができます。

あなただけのユーザーのためにそれを困難にすることができます。

  • は、ブラウザのフィンガープリントを作成するために、クライアント側のスクリプトを実行します - https://github.com/Valve/fingerprintjs2 - あなたが生成するユーザー
  • を識別しやすくするためにサーバに送信サーバ側トークンおよびクライアントに送信してのlocalStorageに保管し、セキュリティの余分なレイヤを追加するためのDB
  • 使用セッション/クッキーにユーザーのサーバー
  • ストアIPに戻ってそれを送信
  • あなたが所有する別のドメインからコードを読み込んでそこから余分なクッキーを追加するには、隠しiframeを使用します(ユーザーがサイトのクッキーをすべて削除しないことがあります)。
  • あなたが画像をダウンロードする前にcaptchasを置くあなたがボットに捨てられないようにしてください

上記のすべての組み合わせを使用すると、ユーザーアカウントを作成せずにサイトから写真をダウンロードすることは迷惑になりますが、不可能ではありません。

+0

しかし、これは私にとっては役に立ちません。ユーザーはキャッシュを削除したり、別のブラウザからダウンロードしたりすることができます。 – Rawaf

+0

私が言ったように、ユーザーにサインインすることを要求せずにそれを行う方法はありません。 – motanelu

+0

本当に奇妙です!他のウェブサイトはこれをどのようにしていますか?知りません!! – Rawaf

関連する問題