2017-08-21 59 views
0

我知道如何實現基於令牌的認證。但我擔心的是用戶的行爲,如註冊,登錄或驗證,對攻擊機器人。我可以想象一個殭屍通過假電話號碼發出請求,我的短信或郵件服務器將響應所有這些請求!或者數以千計的註冊用戶在數據庫中的用戶表中,他們是假的,未經過驗證。我知道一些防火牆策略來阻止網絡層中的這些類型的攻擊和流量。但是可以通過驗證碼或其他方式來確保「未經驗證」的HTTP操作?保護slim 3,RESTful API

如果是,如何將驗證碼圖像從API服務器發送到客戶端?在RAW中?如果發送驗證碼是可能的,那麼如何才能找到哪個驗證碼是哪個客戶端?會話可以幫助嗎?

感謝您的關注。

回答

2

您可以實施一種CSRF(跨站請求僞造)陷印形式以避免這種情況。我使用CSRF和蜜罐字段的組合。下面是基本概要:

  1. 服務器經由包含被設置在運行和存儲在服務器作爲一個會話變量上的值的隱式輸入標籤填充的字段。
  2. 表單還包含使用CSS隱藏的文本字段(type =「text」或textarea)。
  3. 當我們發佈表單時,隱藏值(CSRF)令牌必須與保存的會話版本匹配,並且蜜罐字段必須爲空。

如果測試失敗,我回應一個401或404

註冊機器人通常會填補蜜罐領域,一些有足夠的智慧來規避CSRF - 我登錄失敗,這些測試和比較捕獲所有的嘗試幾個機器人嘗試。

+0

想象一下,我在另一臺服務器上有一個Web界面用於用戶註冊。通過快速瀏覽HTML和JS的源代碼,攻擊者可以準備好進行有效的攻擊。 –

+1

情況總是如此。目標是儘可能減少虛假條目。在我的情況下,CSRF字段名稱以及每次迭代中的值更改。蜜罐場不會改變。許多註冊機器人不會多次檢查表單,他們只是重複發送POST。其他人則檢查表格中的字段並填寫。 您也可以在此之上實現Captcha和其他啓發式。如果您願意,我會建議您使用已建立的服務,而不是自己滾動,如果您允許的話(例如Google Recaptcha),因爲它們非常成熟。 – RichGoldMD