entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

inputs editables en inspeccionar elemento

buenas tengo un problema en algo que estoy desarrollando consiste en un juego online con sistemas de compra de carros como vestimentas en la web un simple usuario usando el inspeccionar elemento puede editar los valores de los inputs y lo más raro de todo es que lo puede hacer perfectamente y SÍ (lo he probado muchas veces) surgen los cambios, tras editar el precio a 0 lo puede comprar exitosamente a 0, si le pone un valor -99999 (negativo) lo que hace además de adquirirlo gratis le da, otorga o suma al jugador $99999 de la moneda

gracias

2 Respuestas

2votos

magarzon Puntos30650

No, no hay ninguna forma.

Pero es que en cualquier web tienes que tener dos tipos de validaciones:

  • Validación cliente: Es decir, en la parte del html, mediante javascript, validas que lo que meten en un input es correcto. Pero esta validación se hace para evitar hacer peticiones innecesarias al servidor. Por ejemplo, para qué voy a hacer una petición al servidor con un email mal formado, si sé que no me va a servir. No es una validación de seguridad, porque no solo es que te puedan modificar el html con el inspector, es que te pueden hacer la petición al servidor sin usar siquiera el navegador

  • Validación en servidor: En el servidor se realizan, sobre las entradas del usuario (parámetros de las peticiones), las validaciones de seguridad, si las quieres llamar así. Aquellas que, si no existen, pueden estropear tu sistema o tener efectos indeseados, como que le regales cosas a alguien sin pagar.

De todas formas, ¿por qué dejas que el usuario diga (aunque esté en un input hidden, toda entrada/parámetro a un método de servidor es "público") cuál es el precio del producto? El precio solo lo tienes que mostrar, no es modificable, por tanto el usuario solo te tiene que decir qué producto quiere (su id, por ejemplo), y tú en el servidor vas a la tabla de productos y miras qué valor tiene ese producto, y se lo cargas en su cuenta.

0voto

MikeNicholas comentado

eso es justamente lo que no sabria como realizar, darle un valor fijo no modificable a los items. lo de cargarle yo mismo manualmente no iria porque estoy buscando algo automatico. con eso de la tabla de productos se me ocurrio justamente hacer una con ese mismo nombre y en las funciones en lugar de agarrar las id y el precio de ese archivo que mencione que tome los datos de la DB pero no sabria bien con que codigo hacerlo, por eso recurro aca a ver si me pueden orientar un poco mejor, gracias por dejar tu comentario.

0voto

magarzon comentado

No sé exactamente cómo está organizado tu código (no tengo mucho tiempo para andar analizando los documentos que enlazas, sorry), pero la cosa iría así:

Accedo a la BD (o donde tengas guardados los datos de los productos, porque por lo poco que he mirado tu código por encima, no sé si lo tienes almacenado en fichero), obtengo el ID de producto, nombre, descripción, precio, etc. y con eso creo una entrada en la lista de productos del HTML. Si no vas a necesitar meter ningún dato en la compra, con un botón que diga "comprar" y que desencadene una llamada a tu servidor, con el ID del producto, te vale, no haría falta formulario ninguno.

En el servidor, en la parte que recibe la orden de compra, recibirá por parámetro el ID del producto que el usuario quiere comprar. Solo tienes que acceder a la BD (o al fichero) de productos, con el ID que te viene, ver qué precio tiene, y descontárselo al usuario.

No sé exactamente qué parte no llegas a entender, si puedes ser más específico, te podremos ayudar mejor.

0voto

MikeNicholas comentado

claro, es exactamente esto lo que quiero hacer, de verdad gracias por la respuesta. lo que no se bien es que query o consulta hacer exactamente, supongamos que la tabla donde tengo eso se llama productos y tenga en ella: id y precio como deberia colocarlo?

2votos

Leonardo-Tadei Puntos227320

No se puede.

Aún si pudieras sacar del inspector los valores, simpre se podría guardar la página localmente, modificarla, guardarla y luego hacer click para enviarla con datos falsos.

Jamás hay que confiar en las entradas!

Tu problema es nada más que de enfoque y la solución muy simple: en vez de usar los valores recibidos por $_GET o $_POST, lo que tenés que hacer es recibir el ID del auto o de la ropa, hacer una query y obtener de nuevo los valores del producto, ya que son esos los únicos valores que son confiables.

Las DB son de veras muy rápidas, y esto que parece ser acceder 2 veces al mismo dato (cosa que no es cierta porque cada ejecución de un script es independiente de las otras) es muchísimo más rápido que los demás procesos, e incluso pued emejorar la velocidad en general ya que así se transmiten menos datos al servidor.

Pasando a un ejemplo, en una página estás mostrando el producto con ID 123, del cual se ve el nombre, el precio, el código, etc, y el botón de comprar que es un formulario que apunta a otra página; en esta otra página, recibís el ID 123 y con él hacés la misma query anterior para obtener todos sus datos y sarlos. De esta forma el precio será siempre el de la DB y no el que haya visto el usuario.

Salduos cordiales!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta