2016-10-16 40 views
1

我正在構建一個PHP網頁,其中有一個用於下載圖像的按鈕。我想限制未簽名的用戶只下載這個圖像3次。限制PHP中用戶IP地址的下載次數

我不想使用Session和Cookies,因爲用戶可以刪除他的cookies!

我想使用IP,所以我使用了全局變量$_SERVER,但這裏的問題是IP地址是可變的。它是動態的,每一段時間都會改變。

那麼我該怎麼做?

+0

我不相信你可以,根據你放置的限制。但是,根據照片數量的不同,您可能希望對照片進行時間限制(即,禁止在24小時內下載超過三次)。它可能會完成你想要做的同樣的事情。注意;這隻有在用戶可以選擇大量圖片的情況下才有效。 – Sablefoste

回答

2

並非所有的IP都是動態的,這取決於ISP。您的問題是唯一地識別用戶,這是不需要用戶登錄的情況下不可能做到的。無論您使用什麼,IP,Cookie,會話,客戶端腳本來執行瀏覽器指紋或存儲在localStorage中的令牌,熟練的使用意願總是設法克服你的保護。

只能使其難以爲用戶:

  • 運行客戶端腳本來創建瀏覽器的指紋 - https://github.com/Valve/fingerprintjs2 - 並將其發送給服務器,以幫助您識別用戶
  • 產生服務器端的令牌,並將其發送給客戶端,並將其存儲在localStorage的,並將其發送回服務器
  • 店在DB
  • 使用會話的用戶的IP /餅乾添加安全
  • 一層額外的
  • 使用隱藏的iframe從您擁有的不同域中加載代碼並從那裏添加額外的cookie(有時用戶不會刪除所有cookie,僅適用於您的網站)
  • 將captchas放在用戶可以下載圖像之前這樣你就不會被機器人報廢

使用上述所有的組合將會使用戶無法從網站上下載圖片而無需創建用戶帳號,但這並非不可能。

+0

但是這對我沒有用處,用戶可能會刪除緩存或從其他瀏覽器下載! – Rawaf

+0

正如我所說,如果不要求用戶登錄,就沒有辦法做到這一點。 – motanelu

+0

真的很奇怪!其他網站如何做到這一點?我不知道!! – Rawaf

相關問題