Tips y Seguridad para PHP

He realizado algunos tips, basados en mi experiencia de este fabuloso lenguaje de programación para sitios webs. Aquí­ va la lista. Se aceptan sugerencias:

  1. Siempre al poner en producción un desarrollo, habilitar el error_reporting(0) en cabecera, en caso de error, el cliente no verá un mensaje feo en pantalla.
  2. Siempre esconder la tecnologí­a utilizada, vale decir todos los .php , arreglalos con mod_rewrite.
  3. Siempre validar los parámetros que se entregan. Todos los datos que vienen de INTERNET deben ser validados. Ejemplo:

    if(is_numeric($_GET['variable'])) // Integer
    if(is_string($_GET['variable'])) // String
    if($this->Session->check('Usuario')) // Chequear usuario valido

  4. Para evitar un SQL Injection o un XSS Atack, utilizar la funcion addslashes. Ejemplo:
    $variable = addslashes(trim($_GET['variable']))
  5. Todos los datos que se envien deben ser codificados en UTF-8 para ser internacionalizados.
  6. Siempre formatear los numeros en formato €. Ejemplo:

    $total = number_format($euro,2,'.',',');
    Resultado: €1.000,20
  7. El formato de fecha SIEMPRE debe ser DIA-MES-Aí‘O, esto se realiza con la función date. Ejemplo:
    $fecha = date('d-m-Y', strtotime($fecha));
  8. Al comunicarse con flash, se debe tener en cuenta el crossdomain.xml. Ejemplo:

    <cross-domain-policy>
    <allow-access-from domain="”*.atobiz.com”"></allow-access-from>
    </cross-domain-policy>
  9. Al realizar pagos y demases, guardar SIEMPRE el precio en una session, ya que por $_GET o $_POST puede ser hackeado.
  10. Siempre encriptar los password con md5, ningún password puede quedar almacenado en texto plano.
  11. Siempre para comprobar si existen datos, utilizar las funciones isset o empty, ejemplo:

    if( ¡empty($_POST['valor']))
    if(isset($_POST['valor']))
  12. Si se esta utilizando un textarea, siempre traspasar el contenido a la funcion htmlspecialchars. Ejemplo:

    $texto = htmlspecialchars($_POST['texto']);

  13. Ningun directorio puede quedar visible para las personas. Para regular esto, poner un index.html en el directorio, para que al ser visualizado quede la pantalla en blanco.
  14. Register Globals esta obsoleto, usar $_GET o $_POST.
  15. NUNCA transpasar datos de usuario via $_GET.
  16. $_POST es para enviar información, $_GET es para recibir.
  17. Utilizar Javascript para validar datos no es suficiente, recuerda que hay clientes que tienen esto deshabilitado.
  18. Nunca utilizar terminaciones .inc ,estas pueden ser vistas por los usuarios, ya que el servidor las entiende como texto plano.

No hay Trackbacks

5 Comentarios

  1. Excelente post; preciso, breve y realmente útil para los que tenemos menos experiencia.

    Saludos.

    Comentado 9 Mayo 2008 a las 1:36 | Permalink
  2. cnavarro

    Muchísimas gracias, realmente útil tu post, llegué a tu blog por casualidad, pero estimo que se va a marcadores, a ver si sigues publicando info de php y ruby on rails.

    Saludos.

    Comentado 29 Julio 2008 a las 11:26 | Permalink
  3. @cnavarro para servirle :)

    Comentado 29 Julio 2008 a las 19:24 | Permalink
  4. mezala

    muy bien el post.

    Pero ojo con el punto 7, que si necesitas insertar fechas en bases de datos, dependeras del idioma de la base.

    Lo mismo al punto 6, formateas el numero y luego agregas el caracter de signo monetario, es mas standard.

    saludos!!

    Comentado 11 Noviembre 2008 a las 17:51 | Permalink
  5. @mezala concuerdo contigo, para insertar fechas es otro el formato estandar: Y-m-d H:m:s

    Saludos

    Comentado 12 Noviembre 2008 a las 12:27 | Permalink

Escribe un Comentario

Tu e-mail nunca será compartido. Los campos requeridos están marcados *

*
*

dokshor.com (RSS) + Sator-ii theme by Felipe Lavín and finally edited by dokshor.