如果在客户端源代码中可以看到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>
答案 0 :(得分:1)
我使用我添加到注册页面的google recaptcha v2 https://www.google.com/recaptcha/intro/index.html#advanced-security以及一些服务器端云代码来解决我们网站上的虚假注册问题,步骤:
在google recaptcha注册您的域名,您将获得两个密钥,一个密钥站点和一个密钥。 Google recaptcha仅适用于指定的域和本地主机。
安全密钥用于与谷歌在服务器云代码上进行通信。
请务必使用google recaptcha v2
将网站密钥和重新访问小部件集成到您的html中,网上有很多关于如何执行此操作的示例。
当用户提交recaptcha时,网站会收到来自Google的回复。如果谷歌的机器学习回收对你有所怀疑,那么它会提示挑战来证明你是一个人。
在您通过质询后,Google会向您的网站发送回复令牌。
在您的Parse signUp上,将令牌以及用户详细信息发送到您的云代码。
在云代码beforeSave触发器中,将令牌与您的密钥一起发送到谷歌(请参阅下面链接中的云代码)
Google将验证令牌,响应将指示令牌是有效还是无效。
请参阅以下帖子,其中包含了您在服务器端需要的云端云。 Parse.Com - HTTP method in cloud code, how do I wait for the response。超级易于设置。