Comunidad oficial de diseñadores web, web developers y Webmasters. Aqui podemos tratar temas actuales sobre diseño y tecnología. Podemos compartir y actualizarnos. Photoshop, Flash, PHP, ASP, Java, HTML, CSS, MySQL, CMS, etc. Unite YA y lee los Sticky

Ver más
  • 13,065 Miembros
  • 9,531 Temas
  • 3,449 Seguidores
  • 0

Ayúdenme a evitar SQL injection

Hola Necisito que me ayuden con una funcion para envitar esto ya que hay muchos desapensivos que solo les gustan hacerle mal al otro..

lo que tengo es una pagina de noticias que cuando hago clic en una noticia me la abre conectándose a mysql y pidiendo los datos por id

Este es el codigo de la noticia cuando le doy clic

<a href="noticia_exp.php?id=<?php echo $ejec["id"]; ?>">Leer mas </a>

Mientras tanto el codigo en noticia_exp.php

<?php
// conexion a la base de datos

$selec = "SELECT * FROM tabla WHERE id = {$_GET['id']}";
$boton = mysql_query($selec,$conexion);
$ejec = mysql_fetch_array($boton);


?>

los que quiero es alguna funcion para evitar numeron float ya que cuando pongo en la barra de navegacion

noticia_exp.php?id=1,2

automativamente me tira el error de la base de datos.. quiero evitar esto

ayudenme porfavor

gracias
  • 0
  • 1Calificación
  • 2Seguidores
  • 174Visitas
  • 0Favoritos

10 respuestas

@soloxd dijo Hace más de 3 meses:

Filtra si es numérico y después setealo como integer

@Glitched dijo Hace más de 3 meses:

Yo no se mucho sobre SQL injection, pero lo que se me ocurre es que podes sacar la coma con str_replace?
$id = str_replace('','', $ejec['id']);

Entonces ahi usas:
<a href="noticia_exp.php?id=<?php $id str_replace(',',''$ejec['id']); echo $id?>">Leer mas </a>

@pichoncitotv dijo Hace más de 3 meses:

Simplemente hace: $id = (int) $_GET['id'];

Glitched dijo:

Yo no se mucho sobre SQL injection, pero lo que se me ocurre es que podes sacar la coma con str_replace?
$id = str_replace('','', $ejec['id']);

Entonces ahi usas:
<a href="noticia_exp.php?id=<?php $id str_replace(',',''$ejec['id']); echo $id?>">Leer mas </a>


str_replace no es recursivo, se puede saltear.

@temaqueja dijo Hace más de 3 meses:

http://php.net/manual/es/function.preg-replace.php


function aNumero($str) {
  $str = preg_replace(“/[^0-9]/”, ”", $str);
  return $str;
}

$id = aNumero( $_GET['id'] );

@pichoncitotv dijo Hace más de 3 meses:

temaqueja dijo:

http://php.net/manual/es/function.preg-replace.php


function aNumero($str) {
  $str = preg_replace(“/[^0-9]/”, ”", $str);
  return $str;
}

$id = aNumero( $_GET['id'] );



por favor porque ahogarse en un vaso de agua?

@fullvice dijo Hace más de 3 meses:

hace esto, agregale mysql_real_escape_string, osea asi:


$selec = "SELECT * FROM tabla WHERE id=".mysql_real_escape_string($_GET["id"]); 

@HosmelQ dijo Hace más de 3 meses:

$id = (int) $_GET['id'];

@Miguel-Vasquez dijo Hace más de 3 meses:

dijo:

mysql_real_escape_string



esto no es necesario en cadenas numéricas como dice @HosmelQ basta

<?php $id = (int) $_GET['id']; ?>

@Taringa400 dijo Hace más de 3 meses:

fullvice dijo:

hace esto, agregale mysql_real_escape_string, osea asi:


$selec = "SELECT * FROM tabla WHERE id=".mysql_real_escape_string($_GET["id"]); 

Tienes que ser miembro para responder en este tema