parse.com JavaScript注册安全性

时间:2016-01-18 17:02:23

标签: javascript security parse-platform

如果在客户端源代码中可以看到javascript api密钥,那么如何防止伪造注册?我已经阅读了类级权限和ACL,但是对于注册,用户需要输入并保存用户名和密码才能开始。
有人可以轻松地将假用户/数据添加到someones parse.com app。我知道它可能发生在其他系统上,但对于parse.com,开发人员必须注意产生的数据成本而不是每秒都要超过请求。那怎么可以预防呢?当然有一些机制可以阻止这种情况,如果它的parse.com不应该对开发进行收费,如果他们自己的系统没有简单的方法可以预防。

如果您尝试在浏览器中从桌面运行此html注册,则可以继续添加用户: - 的修改

<!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>

1 个答案:

答案 0 :(得分:1)

我使用我添加到注册页面的google recaptcha v2 https://www.google.com/recaptcha/intro/index.html#advanced-security以及一些服务器端云代码来解决我们网站上的虚假注册问题,步骤:

  1. 在google recaptcha注册您的域名,您将获得两个密钥,一个密钥站点和一个密钥。 Google recaptcha仅适用于指定的域和本地主机。

    • 网站密钥以HTML格式显示。
    • 安全密钥用于与谷歌在服务器云代码上进行通信。

    • 请务必使用google recaptcha v2

  2. 将网站密钥和重新访问小部件集成到您的html中,网上有很多关于如何执行此操作的示例。

  3. 当用户提交recaptcha时,网站会收到来自Google的回复。如果谷歌的机器学习回收对你有所怀疑,那么它会提示挑战来证明你是一个人。

  4. 在您通过质询后,Google会向您的网站发送回复令牌。

  5. 在您的Parse signUp上,将令牌以及用户详细信息发送到您的云代码。

  6. 在云代码beforeSave触发器中,将令牌与您的密钥一起发送到谷歌(请参阅下面链接中的云代码)

  7. Google将验证令牌,响应将指示令牌是有效还是无效。

  8. 请参阅以下帖子,其中包含了您在服务器端需要的云端云。 Parse.Com - HTTP method in cloud code, how do I wait for the response。超级易于设置。