2012-07-02 37 views
0

我正在嘗試在C#中爲SharePoint構建一個應用程序,該應用程序將包含一個帶有upvote/downvote系統的小型組件。像Stack Overflow這樣的安全AJAX投票系統? (SharePoint實施)

這看起來有問題。如果我想使其安全,我使用服務器端代碼進行投票,但這聽起來像是一種糟糕的用戶體驗。

藉助AJAX,用戶體驗更好,但您容易受到黑客入侵。

我看到的主要漏洞是爲用戶分配投票。我假定無論接口(讓我們假設Ajax爲List),這些將是JavaScript中設置的變量。

似乎很容易在瀏覽器中啓動任何JS控制檯並提交投票/問題的投票。

除非我想驗證每一個針對page_load上的用戶名的投票(很多額外的週期),我覺得我僅限於在updatepanel內嵌套一個repeater,並處理該函數內部的投票,生成SPUser身份服務器端。

任何人誰使用嵌套在按鈕的更新面板的中繼器將證明,這是一場噩夢:(

我有什麼辦法?

回答

1

使用客戶端變量漏洞一直是個問題所以最好減少通過服務器端參與利用的可能性

您可以創建一個函數,該函數利用一個鍵來創建專爲當前用戶創建的投票參數如果傳遞的參數已被修改任何方式,即不符合預期的輸出,th拒絕它。如果需要,您可以構建阻止特定用戶投票的功能,如果他們已經超出了畸形請求的閾值。

然後,您可以在提交時確定當前用戶是否已對相應的項目進行投票以防止重複投票,但我會阻止用戶能夠首先投票以獲得更好的UX。