2011-06-19 52 views
0

我有一個使用POST的HTML用於評價圖像。這些圖像是使用SQL隨機選擇的。使用http post的評分系統 - 避免濫用

只要我把它放在我注意到,一些用戶(使用用戶ID標識)能夠把多張選票在很短的時間了他們所選擇的圖像。他們很可能正在利用http POST正在處理的方式存在一個缺陷。

作爲臨時解決方案,我添加了一些代碼以檢查圖像是否在過去一小時內被同一人評分過。這種方法可行,但並不理想,因爲圖像可以在較短的時間內隨機出現。

那麼,我怎樣才能確保單個評級正在朝着正在顯示的圖像前進,同一隨機選擇的任何連續評級被拒絕?

P.S:我可能會向匿名用戶開放,因此任何使用會話的建議都是可以接受的。

+0

爲什麼不解除綁定後點擊或隱藏投票部分 – Gowri

+0

@gowri:這只是防止大部分羊的預防措施,但它不會阻止狼羣。 – Shef

+0

@gowri:這是一個部分解決方案,就像我申請的解決方案。 POST請求通過後,您可以點擊F5或點擊後退按鈕再次觸發它。我需要的是某種方式來說,當前選擇的隨機圖像已經被用戶投票,所以評級沒有被驗證兩次或更多。 –

回答

6

使user_idimage_id複合UNIQUE約束。然後以格式INSERT ... ON DUPLICATE KEY UPDATE運行查詢。

1

如果你有一個可靠的方法時,他們投的票(例如,用戶必須註冊參與)來識別用戶,然後只需在數據庫中存儲其用戶已經投了哪些圖像,以及不接受任何進一步的票信息(或只是用最後一票覆蓋結果)。

如果不識別用戶,你可能永遠不會得到一個可靠的系統,因爲惡意用戶可能使用多個代理服務器等爲特定圖像創建票。

您也可以嘗試通過發出這僅可使用一次每票的唯一交易標識符混淆計票過程,但你保留用戶和圖像關聯的祕密。那麼至少你不能重播或製作投票(雖然它不能阻止某人只是重新加載頁面加載和反覆投票)。