2012-07-24 58 views
-4

像許多人一樣,你知道javascript函數或方法可以通過瀏覽器地址欄運行。我想通過什麼樣的概念來防止這種情況的發生,當用戶在地址欄中運行時,用戶可能不知道該如何進入我的函數參數,並且無法工作!?如何讓我的ajax請求更安全?

我想用一個概念,就像Twitter的後續按鈕。但如果人們知道具體的東西(身份證,日期等),他們可以通過獲得更多的追隨者和東西來破解它。我只希望它在被點擊時運行。

用程序:PHP,jquery的,CSS 這樣的實施例可以基於以上如下。

任何幫助appriciated。 在此先感謝。

+0

你不應該信任客戶端的任何東西。你應該在服務器上驗證這樣的操作。開發一些簡單的客戶端到服務器的關係,你不必擔心這一點。 – Ben 2012-07-24 19:58:23

回答

2

javascript函數或方法可以通過瀏覽器的地址欄運行。我想阻止這種事情發生

你不能。

我想通過什麼樣的概念來防止這種情況的發生,當用戶可能不知道當它在地址欄中運行時不得不進入我的函數參數並且不能工作!

您可以混淆代碼,但這並不妨礙它被反向工程或簡單地重寫。重要的是HTTP請求,而不是使用它們的JS。

我想使用一個概念就像Twitter的後續按鈕。但如果人們知道具體的東西(身份證,日期等),他們可以通過獲得更多的追隨者和東西來破解它。

您需要,服務器上,驗證是發出請求,允許用戶發出請求。在特定的實例中,您可以通過使用當前登錄用戶的會話數據來確定哪個用戶成爲追隨者。

你也應該實現CSRF protection使其他網站不能轉發用戶到你的網站。

你不能平凡地阻止馬洛裏給艾麗斯一些JavaScript放在地址欄,這將使請求。這是一個社會工程攻擊。現在,瀏覽器正在實施對它的保護(例如,從地址欄阻止javascript:uris,並讓人們使用開發者工具)。

您可以實施速率限制,以便腳本無法讓用戶在短時間內跟隨10個人。

您可以請求一個需要完整頁面請求到不同子域的請求,並讓該子域將一個構造請求拉回原始服務器。由於用戶必須與來自兩個主機名稱的數據進行交互,因此單個粘貼的腳本將無法完成整個過程(因爲存在相同的原始策略)。這可能是過度殺傷。

0

我覺得你最好的辦法是避免增加任何變量全局範圍。

在全球範圍內無法訪問的東西無法通過網頁上的匿名功能,地址欄等訪問。如果沒有辦法將inject腳本放入您的頁面,則應該非常安全。

除此之外,我不相信有一種方法來防止用戶在地址欄上運行腳本。