hermess87
Usuario (Argentina)
Seguramente todos ustedes ya estén familiarizados con el termino ”Inyección SQL”, en caso de que no sea así, les comento que así nos referimos al método de infiltración que aprovecha una vulnerabilidad informática muy común en aplicaciones web.La idea general consiste en inyectar código SQL mediante campos <input> por ejemplo. Ahora, la vulnerabilidad es tal solo si el desarrollador no ah tomado los cuidados suficientes. Aunque no lo crean esto es bastante común.Para evitar esto basta con “revisar” lo que llega de nuestros formularios, o campos cualquiera sean y validarlos antes de enviarlos a nuestro motor SQL.En el caso de que estemos utilizando MySql, PHP nos da una mano otorgando el tan utilizado mysql_real_escape_string: <?php:$query = sprintf("SELECT * FROM libros WHERE autor='%s'", addcslashes(mysql_real_escape_string($autor_nombre),'%_')); mysql_query($query);?> Hasta aquí todo iría perfecto para MySQL, pero que sucede cuando estamos utilizando otro motor de base de datos, como ser por ejemplo MS SQL Server. Sencillamente esto no funcionara. Para solucionar esto les traigo el siguiente script:EvitarInyeccion.php <?php if (!function_exists("GetSQLValueString";)) { function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "";) { $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; $theValue = function_exists("mysql_real_escape_string";) ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); switch ($theType) { case "text": $theValue = ($theValue != "";) ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "";) ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "";) ? "'" . doubleval($theValue) . "'" : "NULL"; break; case "date": $theValue = ($theValue != "";) ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "";) ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } } ?> Como se utiliza ? Pues de esta manera:Supongamos que recibimos mediante un formulario la variable $_POST["nuevoNombre"] y $_POST["edad"] <?phpinclude("EvitarInyeccion.php";); //COMO VERÁN ES NECESARIO DECLARAR EL TIPO DE VARIABLE $nuevoNombre = GetSQLValueString($_POST["nuevoNombre"], "text";); $edad = GetSQLValueString($_POST["edad"], "int";); //GUARDO LA INFORMACION mssql_query("INSERT INTO datosUsuario (nombre, edad) VALUES (".$nuevoNombre.",".$edad.";)";);?> Como verán es bastante sencillo y practico en el caso de que no trabajemos con MySQL, espero que les sirva.
Hola, en esta oportunidad les traigo mas que nada una utilidad. Si necesitan saber los datos de un vehículo contando solamente con el numero de dominio o patente pueden hacerlo fácilmente, desde la comodidad de su casa, utilizando Internet. Como ? Bueno simplemente nos dirigimos a: http://www.agip.gov.ar/web/ventanillas/aplicativos/pat-01.htm Al ingresar al sitio de Agip veremos lo siguiente:Como verán para obtener la información es necesario ingresar un numero verificador provisto en la factura. Para ello dejo dos programitas encargados de calcular el dígito verificador. Uno echo en Visual Basic y el otro en un pequeño archivito de secuencia de comandos. El primero puedes descargarlo haciendo clic aqui. Dentro se encuentra ademas el Source de Visual, para modificarlo a gusto. Al abrirlo veras algo como esto. Creo que no es necesario explicar nada.O bien puedes utilizar la opción mas “liviana” modo texto, haciendo click aqui.Bueno parace que eso es todo. Pero por si les entra les cuento la teoria de como se llega a el famoso “digito verificador”TABLA NUMERICA PARA ESTABLECER EL DIGITO VERIFICADOR DE PATENTES DE VEHICULOS DE CIUDAD AUTONOMA DE BUENOS AIRESA=14 B=01 C=00 D=16 E=05 F=20 G=19 H=09 I=24 J=07 K=21 L=08 M=04 N=13 O=25 P=22 Q=18 R=10 S=02 T=06 U=12 V=23 W=11 X=03 Y=15 Z=17 PROCEDER DE LA SIGUIENTE FORMA EJEMPLO 1 – DOMINIO: USW621 Se toman las letras y número como corresponde USW621. Se reemplazan las letras por los números según tabla USW621=120211621 Se suman los números desde la “derecha” a la “izquierda” alternados 1+6+1+0+1=9 y 2+1+2+2=7 entonces el Digito Verificados es 97 EJEMPLO 2 – DOMINIO : C1661855 Se reemplaza la letra por el número según tabla C1661855 = 001661855 Se suman los números desde la “derecha” a la “izquierda” alternados5+8+6+1=20=2+0=2 y 5+1+6=12 = 1+2=3 Entonces el Digito Verificador es 23