Creé un juego de memoria usando javascript, html, css y PHP sin usar un marco, uso php para guardar el nombre del jugador y el puntaje en la base de datos MySql. Obtengo esas variables de mi javascript y las envío usando jQuery Ajax . mi código se parece a:
$("#submitScore").on("click", function() { let playerName = $('#playerName').val(); if(isEmptyOrSpaces(playerName)){ playerName = "Unknown"; } let data = {"player_name": playerName, "score": totalScore}; $.post("./backend/save_score.php", data, function(){ fetchHighScores(); $("#submitScore").prop('disabled', true); }); });
todo funciona bien, el único problema que tengo es que cualquiera puede enviar una solicitud ajax usando la consola de desarrollo, así que si alguien pone esta línea en la consola y presiona enter
$.post("./backend/save_score.php", {"player_name": "Cheater", "score": 1111111111});
se guardará en mi base de datos, estoy seguro de que hay una solución para eso. Busqué ataques CSRF pero no obtuve la respuesta adecuada . Soy nuevo en el mundo de Ajax . ¿Cómo puedo evitar este tipo de acciones? No quiero usar un marco. ¿Mantengo mi juego lo más simple posible? gracias de antemano
no puedes
Lo que debe hacer en su lugar es cambiar su enfoque y agregar alguna validación del lado del servidor. Deje que JavaScript envíe a su servidor las respuestas del usuario a las preguntas, en lugar de la puntuación final. De esa manera, el servidor puede verificar si la respuesta es correcta o no, y el servidor calculará la puntuación y la devolverá. Esto evitará que cualquiera envíe su propia partitura inventada.