Posted by Wanaya on Nov 12, 2006 in
Divertido,
PHP,
WTF! o_O?,
Web
[quote]“A teacher overheard him say that he was using PHP, and as part of our Zero-Tolerance policy against drug use, he was immediately suspended. No questions asked,” said Principal Clyde Thurlow. “We’re not quite sure what PHP is, but we suspect it may be a derivative of PCP, or maybe a new designer drug like GHB.” [/quote]
noticia
[ESP]Un profesor de Kansas fue suspendido de su escuela por enseñar a sus alumnos a usar PHP. “Es parte de nuestra política de Cero-Tolerancia contra las drogas”- dijo el director de la escuela-”No estoy seguro de lo que es PHP pero sospecho que es un derivado del PCP o quizás un nuevo diseño de droga como el GHB”.-”Se supone que en la escuela deben enseñar a leer y escribir a nuestro chicos. No acerca de drogas peligrosas como PHP”-dijeron los preocupados padres de familia[/ESP]
WTF!!?
¿Que seguirá después?, ¿encarcelarán a todos los que usen CSS?
Solo espero que encarcelen a algunos maestros por no hacer nada y pasándose la clase viendo a las alumnas ¬¬
Yo seguiré usando PHP como droga de uso común, a veces me pone eufórico o deprimido, lo sé son efectos secundarios, pero vale la pena, y si lo mezclan con esa toxina llamada MySql, ¡wow!, que mezcla, les aseguro todo un viaje, en donde sus alucinaciones verán signos de pesos volando por aquí y por allá.
PD: Tambien seguiré sonsumiendo cristalcannabis
Posted by Wanaya on Sep 15, 2006 in
PHP
Este no pretende ser ningún articulo de seguridad informática ni nada al respecto, simplemente trato de formar conciencia al momento de estar programando nuestros sistemas.
Todo empieza cuando no tienes NPI de lo siguiente:
Tienes una consulta SQL que valida un usuario y un password para poder acceder a cierta área de un sistema; una consulta típica des protegida seria así:
< ?php
$nombre = $_POST['nombre']
$pwd = $_POST['password'];
$consultaSQL = mysql_query(“SELECT * from users WHERE nombre=$nombre AND pwd=$pwd”);
$resultado = mysql_query($consulta);
if($resultado)
//usuario autentificado
else
//usuario no identificado
?>
Si le envías “pepe” a $nombre y “1234″ en $pwd la consulta sería así:
SELECT * from users WHERE nombre=’pepe’ AND pwd=’1234′;
La consulta revisaría en la BD si hubiera algún pepe con 1234 como password y si lo hay crea el resultado, dando paso al usuario a entrar.
Pero si envías: ‘ OR ”=’ en las dos variables la consulta sería:
SELECT * from users WHERE nombre=” OR ”=” AND pwd=” OR ”=”;
y como nada siempre es igual a nada, te dejaría entrar.
Y así existen muchisimas formas de usar esta incrustación de sql en nuestras consultas para hacer y deshacer.
¿y que demonios tiene esto que ver con esas funciones raras del titulo?
Pues estas dos funciones nos ayudan a validar nuestras consultas, escapando los caracteres como ‘(comilla simple), \(barra invertida), “(doble comilla), y algunos caracteres que podrían considerarse como peligrosos para el sistema.
¿Pero cual uso?
La respuesta es mysql_real_escape_string() pues escapa mas caracteres que addslashes(), en el caso de la ‘\’
Pero aun así no se resuelve todo el problema, Maikel y yo un día comentabamos acerca de esto. Y lo mejor es validar todas las entradas que el usuario nos de, si se espera un numero, valida que la entrada sea numérica.
esta seria un ejemplo de una funcion mas o menos decente para validar las entrada:
< ?php
// Aplicar comillas sobre la variable para hacerla segura
function comillas_inteligentes
($valor
)
{
// Retirar las barras
if (
get_magic_quotes_gpc()) {
$valor =
stripslashes($valor);
}
// Colocar comillas si no es entero
if (!isInteger($valor)) {
$valor = “‘” . mysql_real_escape_string($valor) . “‘”;
}
return $valor;
}
//funcion que revisa si es entero
function isInteger($subject )
{
if (!preg_match(“/^[\d]+$/”,$subject))
{
return false;
}
return true;
}
// Conexion
$enlace = mysql_connect(‘mysql_host’, ‘mysql_usuario’, ‘mysql_contrasenya’)
OR die(mysql_error());
// Realizar una consulta segura
$consulta = sprintf(“SELECT * FROM usuarios WHERE usuario=comillas_inteligentes($_POST['usuario']) AND password=comillas_inteligentes($_POST['password'])”);
mysql_query($consulta);
?>
Tambien puedes usar otros controles de seguridad como nunca hacer la conexión como superusuario, siempre hacerla con un usuario creado y con derechos no tan extensos.
Aun asi; ningun sistema es totalmente seguro.
PD: Estoy usando las nuevas etiquetas para código PHP