Tips y Seguridad para PHP

Codigo QR

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.

Ruby on Rails errores personalizados

Codigo QR

Estas aburrido de tener en los errores algo como esto?

  • Persona La contraseña debe ser mayor a 10 caracteres
  • Paise Debe completar su paí­s para continuar

La verdad que encontre una solucion media sucia, que en un futuro será remplazada por nuestro amigo usuario_helper.rb

Aca va el codigo:

<% unless @usuario == nil or @usuario.errors.empty? %>
<h3>Errores registrando su usuario</h3>
<ul>
	<% @usuario.errors.each_full do |message| %>
	<li>
	<%
		# Declaramos la variabl, y la inicializamos en 0
		i = 0

		# Separamos el error por espacio
		error = message.split(' ')

		# Recorremos el error
		error.each do |mensaje|
	%>
		<%= mensaje if i > 0 %>
		<%  i = i+1 end%></li>
<% end%></ul>
<% end %>

Macos X y Windows 2003, Active directory

Codigo QR

Que dolores de cabeza durante 2 dí­as, intentando integrar una MacOSX a Windows 2003 (Active Directory). El problema se basaba en que la sección marketing de la empresa donde trabajo, les encanta Mac (Me incluyo desde este momento que me esta convenciendo y aparecere con una Mac). La autentificación de Windows 2003 es a travez de LDAP, entonces vale decir que hay que integrar LDAP a la MAC.

¡Horrible! el Mac estaba en Holandes … 1 dia perdido .. seguimos buscando y encontramos .. luego el problema fue que identificabamos PERO no podiamos acceder al recurso .. otro problema …

Solución .. Instalar el protocolo de Mac para compartir archivos, funciona con la misma autentificacion de Windows 2003 Active Directory o menores ..

Problema .. el Mac tiene acceso a todos losrecursos con escritura y todo .. Bueno eso no importa es la Jefa :)

Optimizacion CakePHP para leer datos de los modelos

Codigo QR

Anteriormente para leer datos de los modelos de las bases de datos utilizaba la siguiente sentencia:

  •  $this->Modelo->id = 2;
    $modelo = $this->Modelo->read();
    $this->set(‘modelo’, $modelo);

Esa sentencia fue remplazada por la simple, facil y limpia:

  • $this->set(‘modelo’, $this->Modelo->findById(2));

Saludos

Respaldo PosgretSQL automatizado

Codigo QR

El cliente tenia los siguientes requerimientos de respaldo en su servidor de bases de datos PostgreSQL:

  • Respaldo todos los dias a las 00:00 de su base de datos PostgreSQL
  • Respaldo en el formato NOMBREDB_Aí‘OMESDIA.sql
  • Permisos especiales para un usuario especifico.

Se utilizo el lenguaje de programacion EXPECT y el codigo es el siguiente:

#!/usr/bin/expect -f
# Parametros por defecto
set server "localhost"
set username "postgres"
set password "CONTRASEí‘A"

# Parametros leidos via WEB
set directorio [lindex $argv 0]
set permiso [lindex $argv 1]
set database [lindex $argv 2]

# Leemos la fecha
set fecha [exec date +%Y%m%d]
set under "_"
set sql ".sql"

set directorio [concat $directorio$database$under$fecha$sql]

spawn /usr/bin/pg_dump -U $username -h $server -W $database -f $directorio
expect "Password: "
sleep 1
send "$password\r"
wait
exec /bin/chown -R $permiso $directorio
exit

El metodo se ejecucion es el siguiente desde un CRON:

* 00 * * * /bin/pg_back /var/www/virtual/dominio.cl/respaldo_postgresql/ micliente:www-data NOMBREDB

Si desea, tambien lo puede hacer manual:


/bin/pg_back /var/www/virtual/dominio.cl/respaldo_postgresql/ micliente:www-data NOMBREDB

El respaldo es de la base de datos completa.

Saludos y frente a dudas postreenlas aca.

New Job City busca empleos de forma 2.0

Codigo QR
  1. ¿Buscas empleo?
  2. ¿Aburrido de las formas actuales para reclutar personal?
  3. ¿Postear Videos, Audios, Imagenes, Documentos?
  4. ¿Quieres demostrar lo que realmente eres y en lo bueno que eres?

La solución es el portal de empleos New Job City www.newjobcity.net , tal cual como dice arriba, cumple toda esas metas. En primera instancia se trabajará con el reclutamiento de personas para trabajar en los 12 nuevos casinos que abriran en Chile.

¿Postula, quien sabe si encuentras tu empleo ideal?

El sistema tomó para su creacion 2 meses, utilizando tecnicas XP para desarrollo agil. Fue creado por mí­ :P en conjunto con la agencia creativa Designa LTDA.

API Twitter PHP, Realmente Facil

Codigo QR

Estimados, el dí­a miercoles 20 de Febrero del 2008, pongo a disposición de ustedes, una API para PHP5 (En php4 no he probado todavia).

Para esta libreria utilize las siguientes tecnologí­as:

  • PHP
  • XPath
  • CURL

Esta libreria cuenta con los siguientes metodos:

“Nos retorna todos los ultimos 10 mensajes que nuestro amigo o nosotros hemos posteado”
lineaTiempo( $nickNameAmigo=opcional) -

“Nos retorna el detalle completo del mensaje”
tomarMensaje($idmensaje)

“Posteamos en tiempo real el mensaje desde PHP”
postearMensaje($mensaje)

“Nos retorna todos nuestros amigos que nos siguen”
seguidores()

De todas formas puedes ver un archivo dentro PHP con un ejemplo mas que claro.

Deseo descargar la libreria Twitter ¡AHORA YA!

Nuevas experiencias

Codigo QR

Ultimamente tengo los siguiente conceptos computines :)

  • XML no es dificil, solo tienes que tener la cabeza pensando <think />.
  • Ajax ya me parece tan normal que lo implemento en todos los desarrollos.
  • La libreria mas facil para manejar DOM, XML, JSON, ETC es motoools.
  • Cuando eligo un framework eligo CakePHP

Tips Computines :P

Quiero otra profesión

Codigo QR

Estimados, semana se loco, proyectos tras cambio de proyectos, realmente me di cuenta que puedo ser disciplinado, pero cuando estas joven. Siento que veo que pasa la edad y la gente se tranquiliza mucho mas :) , espero.

Tiempo del proyecto: 1 Semana (-1 dia), fue feriado el dia de la raza en Argentina.

Empeze aarmar el backend (http://www.cakephp.org) y lo primero fue mi descarga del fabuloso framework CakePHP (PHPero).

Hable con Juan Pablo, el “loco seco pal flash y web”, un amigo de trabajo que viene trabajando hace años en este cuento del internet, “admirable”.

Descomprimi el framework en el servidor, luego me fui directo a CONFIG_SESSION.

Es bueno de utilizar un modelador de datos gratico, asi tienes el cuento claro al toque que terreno vas a pisar.
Comenze con la creacion de modelos de datos (hasMany, belongsTo, etc), modelos de datos que puedo asociar a mi cabeza (PIENSA EN OBJETO PAJARí“N).

El primer fichero creado fue el del administrador, para asi tener una cosa clara y fuerte del principio.

app/model/administrador.php

Creo mi primer modelo, que CakePHP se traduce en “Manejar el objeto de conexion con la base de datos casi de forma automatica”

app/controller/administrador_controller.php

Dentro del fichero del controlador creo mi primera clase:

class AdministradorController extends AppController {
var $name =”Administrador”
var$helpers = array(‘Form’, ‘Html’);

function index() {

}

}

Luego creo mi vista en app/view/administrator/index.html

Tenemos nuestra primera pagina :)
Sigo en mi segundo capitulo en la siguiente nota de un reportero CakePHP que quiere evangelizar :)

Problemas Ñ capitalize en Ruby on Rails

Codigo QR

Desarrollando una nueva aplicacion totalmente 2.0 que lanzare dentro de 1 mes para uso publico, me he encontrado con el problema que mi base de datos con ciudades estaba totalmente en MAYUSCULAS.

Existian ciudades como:

  • VIí‘A DEL MAR
  • VICUí‘A.
  • Etc.

Mi idea por estetica era dejarlas tipo “Viña del mar”, o “Vicuña”.

Revisando la API String de Ruby, me di cuenta que existe un metodo llamado capitalize. El problema de este metodo que me realizaba todo correcto excepto “Lowercasse (PHPero, C) ” de mi í‘, por lo cual quedaba:

  • Vií‘a del mar
  • Vicuí‘a

¿Cual fue mi solucion?

Mi solucion fue simple, y consistio en agregar una expresion regular despues del metodo capitalize, de la siguiente forma:

ciudad.nombre.to_s.capitalize.gsub(/[í‘]/, 'ñ')

Santo remedio, todo funciona a la perfeccion.

Saludos


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