| |||
![]() hola a todos! estoy ya en los pasos finales para lanzar mi web, pero antes quiero tocar el tema de seguridad, he encontrado mucha informacion sobre el tema en google, acerca de inyecciones sql, bots, etc. sin embargo es tanto que no se que aplicar, que recomiendan ustedes? en mi pagina utilizo : html, php, mysql, open flash chart. Estoy usando phpmyadmin para los datos. |
| ||||
Respuesta: Seguridad php y mysql para evitar los sql injections hay comandos php para validar los datos entregados, uno es el stripslashes, busca al respecto... saludos.
__________________ Mi web --> www.CarlosPC.net |
| |||
Respuesta: Seguridad php y mysql muchas gracias Carlos, voy a investigar, habia leído tambien algo por ahí de ruby on rails (RoR), son lo mismo estas opciones de seguridad? son excluyentes entre si o se pueden usar al mismo tiempo? Una pregunta sobre los captcha, estaria haciendo doble trabajo si instalo estos script antes de subir la pagina a la red si hablamos del tema de la ubicacion de los mismos? o estoy totalmente equivocado? Ya se que son muchas preguntas pero bueno... asi se aprende, gracias! |
| |||
![]() he entendido que debo usar el mysql_real_escape_string en cualquier formulario donde el usuario ingrese datos a mi base de datos, la duda que tengo es: en mi pagina tengo una encuesta que solo utiliza botones select en donde solo pueden escoger numeros del 0 al 10, es necesario que utilice esta funcion para proteger el envio de estos numeros? o aqui no es necesario? igualmente tengo consultas a la base de datos para generar gráficas, aqui tambien seria necesario proteger las consultas mysql?... en resumen tendria que aplicar esta funcion a cualquier consulta independiente de si solo se trata de procesos internos? |
| |||
Respuesta: seguridad mysql cuando utilizan la funcion siempre la "conectan" despues del where en la consulta, pero si tengo algo como esto: $query="select ".$EXP." from ".$CM." order by ".$EXP." asc limit 1,100"; como haria para aplicarle el mysql_real_escape_string? o aqui no es necesario aplicarla? |
| |||
Respuesta: seguridad mysql gracias ya he leido la mayoria de lo que hay en ese link, pero no veo un ejemplo de como hacerlo con : $query="select ".$EXP." from ".$CM." order by ".$EXP." asc limit 1,100"; |
| ||||
Respuesta: seguridad mysql Siempre que incluyas una variable no numérica debes escaparla, ejemplo:
Código PHP:
Ver original P.D1: La librería mysql ya es obsoleta y deberías considerar migrar a mysqli o PDO P.D2: Por favor no abras dos o más temas con la misma consulta |
| |||
Respuesta: seguridad mysql gracias! estuve aplicandolo a un update: $cli1=sprintf ("UPDATE ".$MC." SET $EXP='".$reg["$EXP"]."' WHERE ".$NG."='%s' ", mysql_real_escape_string('1')); mysql_query($cli1); pero ya no me actualizo los campos en mi base de datos, y no me da error, a que se debe? |
| |||
Respuesta: seguridad mysql No me tira ningun error, de hecho todas las demas sentencias funcionan, excepto esta que fue la que modifique.. lo que quiero hacer es proteger el codigo de inyecciones sql, estuve investigando y de esta manera lo hacen Última edición por ANDRESDD; 02/09/2012 a las 23:09 |
| |||
Respuesta: seguridad mysql Cita: - $reg[$EXP] si es un cadena, voy a escaparla.
Iniciado por Triby ![]() - $reg[$EXP] es una cadena?, entonces deberías escaparla - El valor para $NG es numérico?, no necesitas escaparlo sólo asegurarte de que sea numérico - Los valores de $MC y $EXP son tomados de alguna entrada del usuario ($_GET, $_POST, etc.)?, entonces deberías verificar que el contenido sea adecuado - $NG si es un valor numerico, y lo tenia como ".$NG."=1 deberia dejarlo asi o como me aseguro de que sea numerico? -$MC Y $EXP son seleccionados en base a un dato que se envia, dejo el codigo para que se vea mejor: $var=mysql_real_escape_string($_POST['r1']); $registro=mysql_query("select ".$EXP.", ".$AP.", ".$A.",from ".$PB." where ".$NG."='$var' "); while($reg=mysql_fetch_array($registro)){ $cod1=mysql_real_escape_string($reg[$EXP]); mysql_query("UPDATE ".$MC." SET $EXP=$cod1 WHERE ".$NG."=1 ",$conexion); mysql_query("UPDATE ".$MC." SET $AP=".$reg["$AP"]." WHERE ".$NG."=1 ", $conexion); mysql_query("UPDATE ".$MC." SET $A=".$reg["$A"]." WHERE ".$NG."=1 ", $conexion); } Última edición por ANDRESDD; 03/09/2012 a las 12:11 |
| |||
Respuesta: seguridad mysql Cuando hago esto $var=mysql_real_escape_string($_POST['r1']); $registro=mysql_query("select ".$EXP.", ".$AP.", ".$A.",from ".$PB." where ".$NG."='$var' "); while($reg=mysql_fetch_array($registro)){ $cod1=mysql_real_escape_string($reg[$EXP]); mysql_query("UPDATE ".$MC." SET $EXP=$cod1 WHERE ".$NG."=1 ",$conexion); mysql_query("UPDATE ".$MC." SET $AP=".$reg["$AP"]." WHERE ".$NG."=1 ", $conexion); mysql_query("UPDATE ".$MC." SET $A=".$reg["$A"]." WHERE ".$NG."=1 ", $conexion); } en vez de imprimirme el valor en mi base de datos me imprime literalmente la cadena $reg[$EXP], ya probe con comillas, sin comillas, etc. y ninguno dio resultado |
Etiquetas: |