elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  tu como proteges tus aplicaciones php??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: tu como proteges tus aplicaciones php??  (Leído 5,624 veces)
Atalus

Desconectado Desconectado

Mensajes: 9


Ver Perfil
tu como proteges tus aplicaciones php??
« en: 30 Junio 2009, 20:11 pm »

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 Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: tu como proteges tus aplicaciones php??
« Respuesta #1 en: 30 Junio 2009, 20:29 pm »

Funcion anti Inyecciones SQL incluida en SMF, publicada por дٳŦ*

Código
  1. <?php
  2. function addslashes__recursive($var){
  3. if (!is_array($var))
  4. return addslashes($var);
  5. $new_var = array();
  6. foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v);
  7. return $new_var;
  8. }
  9. $_POST=addslashes__recursive($_POST);
  10. $_GET=addslashes__recursive($_GET);
  11. $_REQUEST=addslashes__recursive($_REQUEST);
  12. $_SERVER=addslashes__recursive($_SERVER);
  13. $_COOKIE=addslashes__recursive($_COOKIE);
  14. ?>
  15.  

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 Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: tu como proteges tus aplicaciones php??
« Respuesta #2 en: 30 Junio 2009, 20:33 pm »

sip, algo asi uso en los mios =) ésta funcion esta mas completa que la mia :xD
En línea

Atalus

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: tu como proteges tus aplicaciones php??
« Respuesta #3 en: 30 Junio 2009, 20:58 pm »

pero si tienes magic-quotes activado?? esa aplicacion t convertira un ' en ///' 
En línea

Atalus

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: tu como proteges tus aplicaciones php??
« Respuesta #4 en: 30 Junio 2009, 21:09 pm »

Bueno buscando por el foro veo una solucion a lo del magic quotes


Citar
//----------------------------------------------+
// 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 Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: tu como proteges tus aplicaciones php??
« Respuesta #5 en: 30 Junio 2009, 21:21 pm »

Es lo mismo que postie yo mas arriba.. :huh:

Saludos  ;D
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 Desconectado

Mensajes: 9


Ver Perfil
Re: tu como proteges tus aplicaciones php??
« Respuesta #6 en: 30 Junio 2009, 21:31 pm »

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 Desconectado

Mensajes: 181


Programming HardCore


Ver Perfil WWW
Re: tu como proteges tus aplicaciones php??
« Respuesta #7 en: 1 Julio 2009, 03:21 am »

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 Desconectado

Mensajes: 9


Ver Perfil
Re: tu como proteges tus aplicaciones php??
« Respuesta #8 en: 1 Julio 2009, 03:25 am »

ya vi el problema..

al parecer el codigo que ronda por ahi, es decir:

Citar
//----------------------------------------------+
// 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:

Citar
// 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 Desconectado

Mensajes: 64


La tierra es plana.


Ver Perfil
Re: tu como proteges tus aplicaciones php??
« Respuesta #9 en: 2 Julio 2009, 13:08 pm »

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
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines