2016-01-18 3 views
-1

Как можно запретить подписывание подписей, так как ключи api javascript видны в исходном коде клиента? Я прочитал разрешения на уровне класса и ACL, но для регистрации пользователь должен ввести и сохранить свое имя пользователя и пароль для начала.
Кто-то может легко продолжать добавлять поддельных пользователей/данных в приложение someones parse.com. Я знаю, что это может произойти в других системах, но для parse.com разработчик должен следить за расходами на данные и не перечитывать запрос в секунду. Так как это можно предотвратить? Конечно, есть какой-то механизм, чтобы остановить это, и если он parse.com не должен взимать плату за разработку, если у их собственной системы нет простого способа предотвратить.parse.com Безопасность регистрации JavaScript

Если вы попытаетесь запустить этот 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

Добро пожаловать в SO. Пожалуйста, посетите [помощь], чтобы узнать, что и как задать – mplungjan

+0

Да, я сделал спасибо ... – rkchl

ответ

1

Я обратился к поддельной подписок на нашем сайте, используя google recaptcha v2 https://www.google.com/recaptcha/intro/index.html#advanced-security, который я добавил на свою страницу регистрации и с некоторым кодом облака на стороне сервера, шаги:

  1. Зарегистрируйте домен в google recaptcha, вы получите два ключа, ключевой сайт и секретный ключ. Google recaptcha будет работать только с указанными доменами и локальным хостом.

    • Ключ для сайта находится в вашем HTML-коде.
    • Ключ безопасности используется для связи по серверу с кодом Google.

    • убедитесь, что вы используете Google ReCaptcha v2

  2. Интегрировать ключ сайта и ReCaptcha виджет в ваш HTML, есть много примеров в Интернете о том, как сделать это.

  3. Когда пользователь отправляет recaptcha, веб-сайт получает ответ от google. Если поисковая машина Google recaptcha вызывает у вас подозрение, тогда это вызовет вызов, чтобы доказать, что вы человек.

  4. После передачи запроса google отправляет токен ответа на ваш веб-сайт.

  5. На вашем Parse signUp отправьте маркер вместе с данными Пользователя в свой код облака.

  6. В облаке триггера код BeforeSave, послать маркер Google вместе с секретным ключом (см облако код в ссылке ниже)

  7. Google проверяет маркер, ответ будет указывать, если маркер является действительным или инвалид.

Обратитесь к следующему сообщению, где я включил облачное облако, которое вам потребуется на стороне сервера. Parse.Com - HTTP method in cloud code, how do I wait for the response. Супер легко настроить.

+0

Код облака запускается только в том случае, если вы вызываете его на своей странице/приложении, которую вы сами создали.Но кто-то все еще может обойти облачный код, создав собственную страницу, используя ваши ключи API и просто начнет заполнять базу данных поддельными пользователями? – rkchl

+0

Неправильно, просмотрели ли вы документацию? Вы забываете, что вам нужно отправить токен recaptcha Google в качестве части процесса регистрации Parse (шаги выше), токен используется на стороне сервера для аутентификации в Google с помощью вашего секретный ключ перед сохранением пользователя. Recaptcha работает только для зарегистрированных доменов и localhost. Вы можете использовать localhost для заполнения базы данных, полной поддельных пользователей, но это будет очень трудоемкий ручной процесс, и recaptcha обнаружит несколько попыток «Я человек» с одного и того же хоста и заставит пользователя пройти дополнительные проверки проверки , – user3524762

+0

Я действительно благодарю вас за помощь и время, но я не думаю, что вы меня поняли. Я говорю, что любой может ** сделать свою собственную страницу ** и продолжать добавлять пользователей с этим, после того как они получат ключи API от приложения/веб-сайта. Я отредактировал вопрос с кодом, который вы можете попробовать. Он не вызывает код облака, поэтому он не проверяет recaptcha или что-нибудь еще? Вышеупомянутая страница, которую вам не нужно запускать с сервера, просто запускается с рабочего стола. – rkchl

Смежные вопросы