2012-03-15 55 views
-2

因此,如果不使用SSL,安全地執行AJAX請求是不可能的。我知道了。您可以查看源代碼通過Javascript發送的數據,也可以通過欺騙頭文件yada yada直接訪問PHP頁面。如果不使用SSL,那麼向PHP頁面發出AJAX請求最安全的方法是什麼?

但讓我們假設這個網絡應用程序並不特別需要安全性,相反它只是一種讓大多數反向工程師處於困境的遊戲。我應該使用什麼樣的障礙?

我不是在尋找一些可笑的頂級Javascript實現的加密算法。我想要簡單以及溫和的安全...如果這不是天生的矛盾。那麼,你們會推薦什麼?例如,我正在運行一個比賽,如果用戶成功點擊圖像(jQuery),它會將其用戶標識和時間戳傳遞到PHP頁面,這兩個MD5均由隨機數據醃製,然後用MIME編碼。 PHP頁面然後驗證這個用戶標識和時間戳,然後以另一個鹽醃的MD5散列的形式返回一個獲勝的「代碼」。我還採用了多個頭部檢查來幫助確保請求來自有效位置。我錯過了什麼,或者是我所能做的一切嗎?似乎有人可能只是開火jQuery點擊事件並毀了整個事情,但我看不出如何防止這種情況。

我會授予任何人提出一個巧妙的人造安全機制的答案!或者......只是誰在告訴我爲什麼我這次很愚蠢。

+0

無法回答沒有更多的細節。 – 2012-03-15 12:55:30

+0

你在尋找什麼樣的細節?我會很樂意編輯我的文章。 – daveycroqet 2012-03-15 12:56:32

+0

我們需要知道您要在客戶端和服務器之間傳輸什麼類型的有效負載。 – 2012-03-15 12:57:20

回答

1

我相信標題檢查可以很容易上當。不傷害,但。

由於您的算法暴露在客戶端,用戶可以簡單地使用自動化腳本將適當的數據發送到您的服務器,以欺騙您的服務器認爲它被點擊。

除此之外,你必須小心會話劫持。用戶實際上可以代表其他人提交這個Ajax請求,特別是如果他們有算法的話。你的應用程序對某些用戶有不同的行爲嗎?如果是這樣,那麼會話劫持可能會變成特權升級問題。

爲了構建安全的應用程序,您需要使用SSL加密有效負載,這不一定是正確的。從你所描述的內容來看,沒有敏感數據是通過網絡發送的。

確保您在服務器端有一些基本的傻瓜檢查來檢查自動或惡意行爲。例如,如果您發現頭文件信息丟失,您可能希望有某種標誌/警報提示某人正在使用該響應。你可能想要做的另一個地方是請求模式。

更安全的模式是讓服務器爲用戶分配一些他們無法逆向工程的會話令牌。理想情況下,此會話標記應以時間戳開頭,而不是用戶名,以提升醃製散列算法的雪崩效果。

由於您的應用程序似乎處理獎品和潛在的錢,我會投入更多的時間來保護這個應用程序。希望這些提示能夠幫助你。

相關問題