2016-01-18 84 views
-1

如何防止假註冊,因爲javascript api密鑰在客戶端源代碼中可見?我已閱讀了課程級別的權限和ACL,但對於註冊,用戶需要輸入並保存他們的用戶名和密碼才能開始。
有人可以很容易地添加假用戶/數據給某人parse.com應用程序。我知道它可能發生在其他系統上,但對於parse.com,開發人員必須警惕導致數據成本,而不是每秒處理請求。那麼如何防止呢?當然有一些機制可以阻止這種情況發生,如果它們自己的系統沒有簡單的方法來阻止它,parse.com不應該收取開發費用。parse.com JavaScript註冊安全

如果試圖從桌面在瀏覽器中運行這個網站註冊,你可以繼續添加用戶: - 編輯

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>Reg</title> 
 

 
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.0.min.js"></script> 
 
<script type="text/javascript" src="http://www.parsecdn.com/js/parse-1.3.5.min.js"></script> 
 

 
<style type="text/css"> 
 
body { 
 
    padding-top: 20px; 
 
    padding-bottom: 40px; 
 
} 
 
/* Custom container */ 
 
.container-narrow { 
 
    margin: 0 auto; 
 
    max-width: 700px; 
 
} 
 
.container-narrow > hr { 
 
    margin: 30px 0; 
 
} 
 
/* Main marketing message and sign up button */ 
 
.jumbotron { 
 
    margin: 60px 0; 
 
    text-align: center; 
 
} 
 
.jumbotron h1 { 
 
    font-size: 72px; 
 
    line-height: 1; 
 
} 
 
.jumbotron .btn { 
 
    font-size: 21px; 
 
    padding: 14px 24px; 
 
} 
 
.marketing { 
 
    margin: 60px 0; 
 
} 
 
.marketing p + h4 { 
 
    margin-top: 28px; 
 
} 
 
</style> 
 

 
<script> 
 
Parse.initialize("Your-Application-ID they got from your app/website", "Your-Javascript-Key they got from your app/website"); 
 
//################################################################################################# 
 
$(document).ready(function() { 
 

 
    Parse.User.logOut(); 
 

 
    $("#submit").click(function(){ // capture the click 
 

 

 
      //parse 
 
            var user = new Parse.User(); 
 
            user.set("username", $('input[name=username]').val()); 
 
            user.set("password", $('input[name=password]').val()); 
 
            user.set("email", $('input[name=email]').val()); 
 

 
            // other fields can be set just like with Parse.Object 
 
            //user.set("phone", "415-392-0202"); 
 

 
            user.signUp(null, { 
 
             success: function(user) { 
 
             // Hooray! Let them use the app now. 
 

 
             var name= user.get("username"); 
 
             alert(name); 
 

 
             }, 
 
             error: function(user, error) { 
 
             // Show the error message somewhere and let the user try again. 
 
             alert("Error: " + error.code + " " + error.message); 
 
             } 
 
            }); 
 
    }); 
 

 
}); 
 
</script> 
 
</head> 
 
<body> 
 
    <div class="container-narrow"> 
 

 
     <hr> 
 

 
     <div id="myTabContent" class="tab-content"> 
 
      <div class="tab-pane active in" id="home"> 
 
       <div class="row"> 
 
        <div class="span6 offset1 well"> 
 
         <legend> 
 
          <h5>Sign Up</h5> 
 
         </legend> 
 
         
 
          <input type="text" id="username" class="span6" name="username" placeholder="User ID"><br><br> 
 
          <input type="text" id="email" class="span6" name="emsil" placeholder="User Email"><br><br> 
 
          <input type="password" id="password" class="span6" name="password" placeholder="Password"> 
 
          <hr> 
 
          <button type="submit" id="submit" name="submit" class="btn btn-info btn-block">Sign Up</button> 
 
         
 
        </div> 
 
       </div> 
 
      </div> 
 

 
      <hr> 
 

 
     </div> 
 
     <!-- /container --> 
 
</body> 
 

 
</html>

+0

歡迎來到SO。請訪問[幫助]查看要查詢的內容以及如何詢問 – mplungjan

+0

是的,我的確感謝... – rkchl

回答

1

我用解決我們的網站假冒註冊等google recaptcha v2 ,我添加到我的註冊頁面和一些服務器端雲代碼,步驟:

  1. 註冊您的域在谷歌recaptcha,你會得到兩個密鑰,一個關鍵站點和一個密鑰。 Google recaptcha只能在指定的域和本地主機上運行。

    • 網站密鑰進入您的HTML。
    • 安全密鑰用於在服務器上的雲代碼與谷歌進行通信。

    • 確保您使用谷歌驗證碼V2

  2. 整合網站鍵和reCAPTCHA小工具到HTML中,有關於如何做到這一點在網絡上很多例子。

  3. 當用戶提交recaptcha時,網站會從google獲得回覆。如果谷歌的機器學習recaptcha對你有所懷疑,那麼它會提出挑戰,證明你是一個人。

  4. 通過挑戰後,Google會向您的網站發送響應令牌。

  5. 在您的Parse signUp上,將令牌和用戶詳細信息一起發送到您的雲代碼。

  6. 在雲代碼beforeSave觸發,發送令牌用自己的密鑰,以谷歌一起(見下面鏈接雲代碼)

  7. 谷歌將驗證令牌,響應會指示令牌是有效的或無效。

請參考以下文章,其中包含您將需要在服務器端的云云。 Parse.Com - HTTP method in cloud code, how do I wait for the response。超級容易設置。

+0

雲代碼只在您自己製作的頁面/應用中調用時纔會運行。但是,有人仍然可以通過使用您的API密鑰創建自己的頁面來繞過雲代碼,並開始用假用戶填充數據庫? – rkchl

+0

這是不正確的,您是否查看了文檔?,您忘記了您需要將Google recaptcha令牌作爲解析註冊過程的一部分發送(上述步驟),令牌在服務器端用於通過您的身份驗證到Google用戶保存前的密鑰。 Recaptcha只適用於註冊域名和本地主機。你可以使用localhost來填滿一個充滿假冒用戶的數據庫,但這將是一個非常耗時的手動過程,並且recaptcha會檢測來自同一主機的多個'我是人類'的嘗試,並且會讓用戶通過額外的驗證檢查。 – user3524762

+0

我真的很感謝你的幫助和時間,但我不認爲你理解我。我在說,任何人都可以**製作自己的網頁**,並在從應用程序/網站獲取API密鑰後繼續添加用戶。我用你可以試用的代碼編輯了這個問題。它不會調用雲代碼,因此它不會檢查recaptcha或任何東西?上面的頁面不需要從服務器運行,只需從桌面運行即可。 – rkchl