Nel mio codice, la prima chiamata AJAX al server controlla il recaptcha e disinfetta i dati.
C'è un modo per un utente malintenzionato di saltare quel processo?
Poiché si tratta di un javascript lato client, potrebbe semplicemente inserire l'email e la password nel codice di creazione utente Firebase modificando il codice?
In realtà, l'utente può modificare il mio codice lato client per saltare i miei meccanismi di protezione?
$("#registerForm").submit(function(e) {
e.preventDefault();
var username = $("#username").val();
var email = $("#email").val();
var password = $("#password").val();
var confirmPassword = $("#confirmPassword").val();
var referer = $("#referer").val();
$this = $(this);
$.ajax({
type: "POST",
url: "register",
data: $this.serialize()
}).done(function(data) {
if (data) {
firebase.auth().createUserWithEmailAndPassword(data.email, data.password).then(userData => {
$.ajax({
type: "POST",
url: "register2",
data: userData.serialize()
}).done(function(result) {
if (result == "WORKED!") {
localStorage.setItem('success_msg_local', "Please check your inbox. You have 1 hour to confirm your email address. Failing to do so will delete the account and let you register again.");
window.location.href="/users/register";
}
else if (result == "FAILED1!") {
firebase.auth().signOut().then(function() {
localStorage.setItem('error_msg_local', 'Failed to Register. Try again.');
window.location.href="/users/register";
});
}
else if (result == "FAILED2!") {
firebase.auth().signOut().then(function() {
localStorage.setItem('error_msg_local', 'Failed to Register. An error occured. Please try again later.');
window.location.href="/users/register";
});
}
});
},function(error) {
var errorCode = error.code;
var errorMessage = error.message;
("ERROR 3: "+ errorCode +" "+errorMessage);
localStorage.setItem('error_msg_local', 'Failed to Register. Please wait 1 hour before trying again.');
window.location.href="/users/register";
});
}
else {
localStorage.setItem('error_msg_local', 'Recaptcha failed'); window.location.href = "/users/register";
}
}).fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
});