Foros del Web » Programando para Internet » PHP »

SQLSRV Evitar inyección de código? PHP

Estas en el tema de SQLSRV Evitar inyección de código? PHP en el foro de PHP en Foros del Web. Hola a todos. El caso es que tengo una base de datos MS-SQL (SQLSRV) y actualmente tengo un sistema de usuarios (formulario de registro, formulario ...
  #1 (permalink)  
Antiguo 21/02/2013, 10:19
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 9 meses
Puntos: 2
SQLSRV Evitar inyección de código? PHP

Hola a todos. El caso es que tengo una base de datos MS-SQL (SQLSRV) y actualmente tengo un sistema de usuarios (formulario de registro, formulario de acceso...) pero no evita la inyección de código... He visto que en MYSQL se usa
Código:
mysql_real_escape_string
Pero ni idea de cómo hacerlo con órdenes para SqlSrv. Ayuda por favor?
  #2 (permalink)  
Antiguo 21/02/2013, 10:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: SQLSRV Evitar inyección de código? PHP

¿Ya revisaste el manual?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/02/2013, 10:24
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: SQLSRV Evitar inyección de código? PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Ya revisaste el manual?
He buscado bastante, he mirado otros posts donde dan soluciones, pero no sé aplicarlo a mi caso =(
  #4 (permalink)  
Antiguo 21/02/2013, 10:25
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: SQLSRV Evitar inyección de código? PHP

Como he visto que estas usando funciones oci_* te recomiendo que uses consulta preparadas aqui se expone bien ese tema

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #5 (permalink)  
Antiguo 21/02/2013, 10:28
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: SQLSRV Evitar inyección de código? PHP

Cita:
Iniciado por jonni09lo Ver Mensaje
Como he visto que estas usando funciones oci_* te recomiendo que uses consulta preparadas aqui se expone bien ese [URL="http://www.forosdelweb.com/f18/como-mostrar-datos-oracle-php-1038024/#post4373340"]tema [/URL]

Saludos
Funciones oci_*? No he usado ninguna de ese tipo en mi código PHP :(
  #6 (permalink)  
Antiguo 21/02/2013, 10:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: SQLSRV Evitar inyección de código? PHP

Creo que se refiere a esto: http://www.php.net/manual/es/ref.sqlsrv.php

Cita:
Iniciado por corei7 Ver Mensaje
He buscado bastante, he mirado otros posts donde dan soluciones, pero no sé aplicarlo a mi caso =(
No digas eso, que el manual esta ahí, obviamente otros casos no serán similares al tuyo.

Es por eso que debes leer la documentación para ver como debes aplicarlo a tu caso.

Nosotros no podemos leer por ti para decirte cómo hacer las cosas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 21/02/2013, 10:35
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: SQLSRV Evitar inyección de código? PHP

Cita:
Iniciado por corei7 Ver Mensaje
Funciones oci_*? No he usado ninguna de ese tipo en mi código PHP :(
Que metida de pata la mía me disculpo, ese tema que te mostré es de Oracle, no se que estaba pensando, pero la idea en si si es usar consultas preparadas busca sobre prepare en sql server que como dice pateketrueke si hay varios ejemplos

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #8 (permalink)  
Antiguo 21/02/2013, 10:36
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: SQLSRV Evitar inyección de código? PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
Creo que se refiere a esto: [url]http://www.php.net/manual/es/ref.sqlsrv.php[/url]



No digas eso, que el manual esta ahí, obviamente otros casos no serán similares al tuyo.

Es por eso que debes leer la documentación para ver como debes aplicarlo a tu caso.

Nosotros no podemos leer por ti para decirte cómo hacer las cosas.
Ok, puedo ir probando, pero cómo compruebo si se evita la inyección de código en mi database?
  #9 (permalink)  
Antiguo 21/02/2013, 10:39
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: SQLSRV Evitar inyección de código? PHP

Ok, he mirado la orden "sqlsrv_prepare", pero, evita la inyección de código? En el manual de php.net aclaran esto:

"sqlsrv_execute — Executes a statement prepared with sqlsrv_prepare()"

"This example demonstrates how to prepare a statement with sqlsrv_prepare() and re-execute it multiple times (with different parameter values) using sqlsrv_execute()."

Pero no sé si tiene relación con el escape de inyección de código :/
  #10 (permalink)  
Antiguo 21/02/2013, 10:39
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: SQLSRV Evitar inyección de código? PHP

Mira esto

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #11 (permalink)  
Antiguo 21/02/2013, 11:13
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: SQLSRV Evitar inyección de código? PHP

He encontrado un post donde lo explica muy bien y da soluciones. Dan como solución este recurso:

1º Crear un script PHP independiente con el siguiente contenido:

Código:
<? 
// Evitamos la inyeccion SQL 

// Modificamos las variables pasadas por URL 
foreach( $_GET as $variable => $valor ){ 
$_GET [ $variable ] = str_replace ( "'" , "'" , $_GET [ $variable ]); 
} 
// Modificamos las variables de formularios 
foreach( $_POST as $variable => $valor ){ 
$_POST [ $variable ] = str_replace ( "'" , "'" , $_POST [ $variable ]); 
} 
?>
2º Incluir en todas las páginas que se utilice el método $_GET Y $_POST estas líneas:

Código:
<? 
// Evitamos la inyeccion SQL 
include 'inyeccion.php' ; 
// 
// Contenido de la página PHP 
// 
?>
Podrían decirme si es válido para evitar la inyección de código? Gracias.
  #12 (permalink)  
Antiguo 21/02/2013, 11:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: SQLSRV Evitar inyección de código? PHP

Cita:
Iniciado por corei7 Ver Mensaje
Podrían decirme si es válido para evitar la inyección de código? Gracias.
No, ese código es pésimo y no asegura nada, lo único que hace es alterar las comillas de todas las variables recibidas y eso mas que soluciones crea problemas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 21/02/2013, 12:31
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: SQLSRV Evitar inyección de código? PHP

Qué opinan de este código? Hace la función de impedir la inyección?

Código:
<form method="post" action="injection.php" enctype="multipart/form-data" > 
    Username:<input type="text" name="Username" id="Username"/></br> 
    Password:<input type="text" name="Password" id="Password"/></br> 
    <input type="submit" name="submit" value="Submit" /> 
</form> 
<?php 



$params = array($_POST['Username'], $_POST['Password']);

$server = "MyServer\sqlexpress"; 
$options = array("Database"=>"ExampleDB", "UID"=>"MyUID", "PWD"=>"MyPWD"); 
$conn = sqlsrv_connect($server, $options); 
$sql = "SELECT * FROM UserTbl WHERE Username = ? and Password = ?"; 
$stmt = sqlsrv_query($conn, $sql, $params); 
if(sqlsrv_has_rows($stmt)) 
{ 
    echo "Welcome."; 
} 
else 
{ 
    echo "Invalid password."; 
} 
?>
  #14 (permalink)  
Antiguo 03/07/2013, 11:23
 
Fecha de Ingreso: julio-2009
Mensajes: 121
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: SQLSRV Evitar inyección de código? PHP

Mira, yo tenia algo así:
Esto lo usé por bastante tiempo y no tuve problemas, habría que ver si sigue siendo útil...

Código PHP:

function antiinjection($str
{
 
$words = array("\\""'"","";""--""-""%20""%27"" ""`""=""%");
 
$words_preg = array("|INSERT|i""|DROP|i""|SELECT|i""|DELETE|i""|UPDATE|i""|TRUNCATE|i""|SHUTDOWN|i");

 for(
$i=0;$i<count($words_preg);$i++){
if(
preg_match($words_preg[$i], $str)){$apina 500;}
}
 for(
$i=0;$i<count($words);$i++){
$jopa=strpos($str$words[$i]);
 if(
is_numeric($jopa)){$apina 500;}
}
if(
$apina==500){
return 
FALSE;
} else {
return 
TRUE;
 }


Etiquetas: inyección, seguridad, sistema, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:43.