Autor
|
Tema: tu como proteges tus aplicaciones php?? (Leído 5,663 veces)
|
Atalus
Desconectado
Mensajes: 9
|
Wenaz a todos,..
ando repasando mis scripts php, depurandolos, y checando la seguridad. y me dio la curiosidad de, ustedes como protegen sus aplicaciones php de atajes injection y esas cosas...
que tal usan el htmlentities, addslashes, strpislashes.. los usan asi con la funcion como tal?? o las complementan con instruccion para detectar magic-quotes en el server y esas cosas..
seria bueno que muestren sus codigos aver si nos sirve para mejorarlos..
|
|
« Última modificación: 30 Junio 2009, 20:28 pm por Atalus »
|
En línea
|
|
|
|
[u]nsigned
Desconectado
Mensajes: 2.397
JS/Node developer
|
Funcion anti Inyecciones SQL incluida en SMF, publicada por дٳŦ*<?php function addslashes__recursive($var){ foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive ($v); return $new_var; } $_POST=addslashes__recursive($_POST); $_GET=addslashes__recursive($_GET); $_REQUEST=addslashes__recursive($_REQUEST); $_SERVER=addslashes__recursive($_SERVER); $_COOKIE=addslashes__recursive($_COOKIE); ?>
Saludos
|
|
|
En línea
|
No hay atajo ante la duda, el misterio se hace aquí... Se hace carne en cada uno, el misterio es existir!
|
|
|
Azielito
no es
Colaborador
Desconectado
Mensajes: 9.188
>.<
|
sip, algo asi uso en los mios =) ésta funcion esta mas completa que la mia
|
|
|
En línea
|
|
|
|
Atalus
Desconectado
Mensajes: 9
|
pero si tienes magic-quotes activado?? esa aplicacion t convertira un ' en ///'
|
|
|
En línea
|
|
|
|
Atalus
Desconectado
Mensajes: 9
|
Bueno buscando por el foro veo una solucion a lo del magic quotes //----------------------------------------------+ // We claer all traffic of our server | //----------------------------------------------+ // This function I extrac of SMF system fourum, cleared all " and ' in traffic server function addslashes__recursive($var){ if (!is_array($var)) return addslashes($var); $new_var = array(); foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v); return $new_var; } //If the magic quotes are disable, aplicate the function, else, do not nothing if(get_magic_quotes_gpc()==0){ $_POST=addslashes__recursive($_POST); $_GET=addslashes__recursive($_GET); $_REQUEST=addslashes__recursive($_REQUEST); $_SERVER=addslashes__recursive($_SERVER); $_COOKIE=addslashes__recursive($_COOKIE); } mas scripts para proteger sistemas php?
|
|
« Última modificación: 30 Junio 2009, 21:12 pm por Atalus »
|
En línea
|
|
|
|
[u]nsigned
Desconectado
Mensajes: 2.397
JS/Node developer
|
Es lo mismo que postie yo mas arriba.. Saludos
|
|
|
En línea
|
No hay atajo ante la duda, el misterio se hace aquí... Se hace carne en cada uno, el misterio es existir!
|
|
|
Atalus
Desconectado
Mensajes: 9
|
no es lo mismo facku.. ahi ya implementan un if para solucionar el problema si tienes activado magic quotes .. weno es lo mismo pero mejorado Ahora tengo un problema.. al usar htmlentities en una web que tengo mod_rewrite, y tratar de agarrar el valor d una variable a travez de get, no lo agarra.. alguien sabe solucionar esto?
|
|
« Última modificación: 30 Junio 2009, 21:52 pm por Atalus »
|
En línea
|
|
|
|
HardieVon
Desconectado
Mensajes: 181
Programming HardCore
|
no es lo mismo facku.. ahi ya implementan un if para solucionar el problema si tienes activado magic quotes .. weno es lo mismo pero mejorado Ahora tengo un problema.. al usar htmlentities en una web que tengo mod_rewrite, y tratar de agarrar el valor d una variable a travez de get, no lo agarra.. alguien sabe solucionar esto? postea tu mod
|
|
|
En línea
|
|
|
|
Atalus
Desconectado
Mensajes: 9
|
ya vi el problema.. al parecer el codigo que ronda por ahi, es decir: //----------------------------------------------+ // We claer all traffic of our server | //----------------------------------------------+ // This function I extrac of SMF system fourum, cleared all " and ' in traffic server function addslashes__recursive($var){ if (!is_array($var)) return addslashes($var); $new_var = array(); foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v); return $new_var; } //If the magic quotes are disable, aplicate the function, else, do not nothing if(get_magic_quotes_gpc()==0){ $_POST=addslashes__recursive($_POST); $_GET=addslashes__recursive($_GET); $_REQUEST=addslashes__recursive($_REQUEST); $_SERVER=addslashes__recursive($_SERVER); $_COOKIE=addslashes__recursive($_COOKIE); } esta mal... aki esta corregido: // With this function, we are clear the html chars to entity ascii function clear_chars($var){ if(!is_array($var)){ return htmlentities($var); } else{ $new_var = array(); foreach ($var as $k => $v){ $new_var[htmlentities($k)]=clear_chars($v); } return $new_var; } } if($_POST) $_POST=clear_chars($_POST); if($_GET) $_GET=clear_chars($_GET); if($_REQUEST) $_REQUEST=clear_chars($_REQUEST); if($_SERVER) $_SERVER=clear_chars($_SERVER); if($_COOKIE) $_COOKIE=clear_chars($_COOKIE); asi funciona a la perfeccion
|
|
|
En línea
|
|
|
|
^Cloud^
Desconectado
Mensajes: 64
La tierra es plana.
|
Lo cierto es que la función está bastante bien y me ha tenido pensando un par de días ya que tenía en la cabeza que php ya dispone de funciones que permiten recorrer de forma recursiva un array y se podría simplificar o mejorar en la medida que se pueda lo expuesto aquí.
Funcionálmente el uso de esto es transparente pero técnicamente puede tener bastante repercusión en el desarrollo de una aplicación y en su rendimiento.
La teoría es fácil. La función array_walk_recursive toma los datos por referencia por lo tanto en la función callback tenemos que tomar la variable que nos llege por referencia. De esta forma estamos cambiando directamente los valores del array original sin tener que duplicar la información en otra variable.
Otro de los puntos interesantes de esto es donde usar esta función y como. Para mi caso sólo me interesa aplicar esto a las consultas sql que se lancen en mi aplicación, por lo tanto, lo voy a implementar con una función que encapsule el lanzamiento de la consulta.
$params = array("13'3","O'relly",1); $sql = "SELECT * FROM users WHERE edad = %d AND nombre = '%s' AND status = %d";
function myaddslashes(&$item) { $item = addslashes($item); }
function db_my_query($sql,$params = array()) { if (!empty($params)) { array_walk_recursive($params,'myaddslashes'); $sql = vsprintf($sql,$params); //return mysql_query($sql); return $sql; } else { return FALSE; } }
print db_my_query($sql,$params);
De esta forma me aseguro, por una parte, que las cadenas de los parámetros de las sql van a tener siempre las comillas escapadas y por otra parte me aseguro que, en todos los casos, cuando la sql requiera una cadena obtenga una cadena y cuando necesite un entero obtenga un entero sin posibilidad de error ya que las cadenas preformateadas no admiten otros tipos de datos mas que los que se especifican en el formateo de la cadena.
Espero que os sirva de algo.
Un saludo,
|
|
« Última modificación: 2 Julio 2009, 17:49 pm por ^Cloud^ »
|
En línea
|
Ahora resulta que imagino mi pasado y llevo en esta clínica cuarenta años. Nunca jamás he pisado la calle y el electroshock ha sido mi padre
|
|
|
|
|