En otros manuales hemos explicado que, dada la naturaleza de los lenguajes de lado servidor, nos es imposible trabajar offline como hacíamos para el caso de las páginas HTML que almacenábamos en nuestro disco duro. También dijimos que esto no era completamente cierto ya que podíamos resolver este eventual problema instalándonos en nuestro PC un servidor propio. Este servidor distribuido por Microsoft tiene dos versiones diferentes que son utilizadas dependiendo del equipo que estemos utilizando. Para los usuarios de W95 o W98, la versión disponible se llama Personal Web Server (PWS).
Si trabajamos bajo sistema Windows NT, o las versiones Profesional y Server de Windows 2000 y XP, el servidor a instalar es el Internet Information Server (IIS).
Existe también la posibilidad de trabajar en plataformas UNIX empleando en este caso el ChilisoftASP.
Continua leyendo “Instalación del Personal Web Server: nuestro servidor personal de web” »
Como todo lenguaje de lado servidor, PHP, requiere de la instalación de un servidor en nuestro PC para poder trabajar en local. Este modo de trabajo resulta a todas luces más práctico que colgar los archivos por FTP en el servidor y ejecutarlos desde Internet.
Así pues, antes comenzar a crear nuestros programas en PHP, es necesario:
- Convertir nuestro ordenador en un servidor. Esto se hace instalando uno de los varios servidores disponibles para el sistema operativo de nuestra máquina.
- Introducir en nuestro servidor los archivos que le permitirán la comprensión del PHP. Estos archivos pueden ser descargados, en su versión más actual, de la página oficial de PHP.
Para conocer la forma de instalar PHP sobre cada servidor de cada sistema operativo podemos dirigirnos al apartado de documentación de la página oficial de PHP donde disponemos de un manual en HTML de rápida consulta y un enorme manual en PDF de casi 1000 páginas traducido al castellano donde explican minuciosamente y entre otras cosas, los pasos a seguir para cada caso particular. De todos modos, nosotros vamos a ofrecer algunas ayudas para configurar PHP en los sistemas más habituales.
Continua leyendo “Instalación de PHP en nuestro servidor” »
El proceso para instalar Apache en Windows es muy sencillo. En adelante, es posible que la configuración del servidor pueda complicarse un poco, sin embargo, si deseamos utilizarlo con las funciones habituales, no hemos de tener mayores problemas en ningún momento.
El servidor web Apache se puede descargar en la página de la Fundación Apache, en apache.org. En la URL http://httpd.apache.org/ tienen una sección en particular para el servidor HTTP (Protocolo de transmisión utilizado en la web), en la que tendremos que buscar el enlace para descarga.
Una vez en la página de descarga debemos buscar la última versión estable o la versión que recomendada. El servidor está disponible para sistemas Unix o Windows, por lo que nos ofrecerán diversas opciones de descarga, incluso para obtener el código fuente del programa. Si deseamos instalarlo en un sistema Windows, necesitamos obtener el archivo Win-32 Binary, que es un instalador Windows.
Modificación del comportamiento de nuestras consultas mediante la introducción de parámetros no deseados en los campos a los que tiene acceso el usuario.
La inyección SQL consiste en la modificación del comportamiento de nuestras consultas mediante la introducción de parámetros no deseados en los campos a los que tiene acceso el usuario.
Este tipo de errores puede permitir a usuarios malintencionados acceder a datos a los que de otro modo no tendrían acceso y, en el peor de los casos, modificar el comportamiento de nuestras aplicaciones.
Vamos a ver con un ejemplo que significa eso de “Inyección de código”:
Supongamos que tenemos una aplicación Web (realizada en ASP por sencillez) en la que el acceso a ciertas secciones está restringido. Para restringir ese acceso creamos una tabla de usuarios y contraseñas y sólo los usuarios que se validen contra esa tabla podrán acceder a esos contenidos. Una manera de que los usuarios se validen será colocar un par de cuadros de texto en nuestra página Web (por ejemplo txtUsuario y txtPassword) donde puedan introducir su nombre y su contraseña y enviar ese par usuario/contraseña a la base de datos para comprobar si es válido.
Primero creamos la tabla que vamos a usar y la rellenamos con datos:
[sql]use web
– Nuestra base de datos se llama web
go
– Creamos una tabla para almacenar los pares usuario/contraseña
create table usuarios (Usuario varchar (50) not null primary key, Password varchar (50))
go
– Introducimos un par de datos de prueba
insert into usuarios (Usuario, Password) values (‘Admin’, ’1234′)
insert into usuarios (Usuario, Password) values (‘Usuario’, ‘abcd’)[/sql]
Ahora veamos el código de las páginas que forman parte del proceso de login.
index.htm
[html]
[/html]
Esta primera página es sencilla. Simplemente los dos cuadros de texto mencionados que enviarán los datos a la página de login.
Login.asp
Y en esta segunda página creamos dinámicamente una sentencia SQL que enviamos a la base de datos para la validación.
Si el usuario escribe Admin y 1234 la sentencia creada será:
[sql]“SELECT Count(*) FROM Usuarios WHERE Usuario=’Admin’ AND Password=’1234’”[/sql]
Y como esta sentencia nos devuelve un registro dejaremos que el usuario entre en la Web. Si el usuario escribe por ejemplo ‘Admin’ y de contraseña cualquier otra cosa, la sentencia no nos devolverá registros y no permitiremos entrar a esa persona.
Pero ¿qué ocurre si el usuario escribe ‘ or ’1′=’1 como usuario y lo mismo de contraseña?
En este caso la variable Consulta contendrá la cadena:
[sql]“SELECT Count(*) FROM Usuarios WHERE Usuario = ” or ’1′=’1′ AND password = ” or ’1′=’1′”[/sql]
Y obviamente esta sentencia nos devuelve registros con lo que el usuario entrará en nuestra Web sin tener permiso.
Pero esto no es lo peor. Lo peor será que el usuario utilice estos trucos de inyección de SQL para ejecutar código arbitrario en nuestro servidor. Sentencias DDL, cambiar permisos, utilizar procedimientos almacenados y un largo etcétera. Qué ocurriría si alguien escribiese de contraseña cosas como:
[sql]‘ exec master..xp_cmdshell ‘net user test /ADD’ –[/sql]
Cómo evitarlo
Y ahora lo más importante, ¿qué podemos hacer para evitar estos errores?
Pues hay varios sistemas para evitarlo. Por ejemplo podemos filtrar las entradas de los usuarios reemplazando la aparición de ‘ por ‘’ (dos comillas simples) e incluso evitando que los usuarios puedan pasar caracteres como / “ ‘ o cualquier otro que se nos ocurra que puede causar problemas. Estos filtros pueden ser tan sencillos como utilizar la sentencia replace de Visual Basic:
[sql]SSQL= “SELECT count(*) FROM Usuarios WHERE Usuario = ‘” & Replace
txtUsuario.Text, “‘”, “””) & “‘ AND password=’” & Replace
(txtPassword.Text, “‘”, “””) & “‘”[/sql]
Otro factor importante en cuanto a la seguridad es limitar al máximo los permisos del usuario que ejecuta estas sentencias para evitar posibles problemas. Por ejemplo utilizando un usuario distinto para las sentencias SELECT, DELETE, UPDATE y asegurándonos que cada ejecución de una sentencia ejecute una sentencia del tipo permitido.
Por supuesto utilizar el usuario ‘sa’ o uno que pertenezca al rol ‘db_owner’ para ejecutar las sentencias de uso habitual de la base de datos debería quedar descartado.
Una solución definitiva sería trabajar con procedimientos almacenados. El modo en el que se pasan los parámetros a los procedimientos almacenados evita que la inyección SQL pueda ser usada. Por ejemplo utilizando el siguiente procedimiento almacenado:
[sql]CREATE Procedure Validar @usuario varchar(50), @password varchar(50) AS
If (SELECT Count(*) FROM Usuarios WHERE Usuario=@Usuario and Password=@password)>0
Return 1
Return 0[/sql]
También deberíamos validar los datos que introduce el usuario teniendo en cuenta por ejemplo la longitud de los campos y el tipo de datos aceptados. Esto lo podemos hacer en el cliente con los RegularExpressionValidator o con los CustomValidators del VB.NET. De todos modos si la seguridad es importante todas estas validaciones hay que repetirlas en el servidor.
Por ultimo, y ya que estamos pensando en entornos Web, podemos programar en ASP.NET yy utilizar siempre que sea posible las clases System.Web.Security.FormsAuthentication para que los usuarios entren en nuestras aplicaciones Web.
Google es el Buscador por excelencia. De hecho hay buscadores y luego está Google, y punto. Y esto nos guste o no, es asi. Pregunta a cualquiera por un buscador, y siempre te dirá Google. De esto deducimos que es mas que importante figurar en él.
Hacer que tu página aparezca en Google es mas que sencillo. Basta con que alguien que ya este indexado en su base de datos, haga un link desde su pagina a la tuya, y Google te encontrara (siempre está actualizando los enlaces de sus bases de datos).
También puedes sugerirle que lea tu pagina desde Aquí .
Como ves es sencillo. Lo complicado es estar bien posicionado, es decir, aparecer en las primeras posiciones de Búsqueda, por que aparecer en Google esta bien, pero si apareces en la pagina 88, a lo mejor no recibimos las visitas que queremos.
Esta es la pregunta del millón. Voy a intentar responderos para que lo entendáis. Google usa un algoritmo (No, eso no es comida china) de búsqueda bastante complejo, pero muy efectivo y lo va cambiando, actualizando y sumándole variables. Ese cálculo de Google se encarga, en parte, de valorar la “calidad o importancia” de una página.
Google tiene permanentemente una cantidad de Bots (programas que automatizan las tareas) navegando continuamente en busca de páginas nuevas y actualizaciones de las antiguas. Antes estos bots eran Googlebot y Freshbot, el primero para las páginas nuevas y el segundo para las actualizaciones de las que ya contenía en su base de datos. Continua leyendo “¿Como mejorar el Posicionamiento (Page Rank o PR) en Google?” »
Cuando apareció la primera versión de esta conocida aplicación de diseño Web, el perfil al que iba dirigido era un usuario con conocimientos de HTML y con experiencia en el desarrollo de paginas Web. Sin embargo, desde la tercera versión (con la que yo empecé), las cosas han cambiado notablemente. Desde Macromedia observaron la necesidad por parte de los usuarios de interfaces más asequibles para los neófitos, la versatilidad, de la nueva interfaz, fácil de utilizar sin olvidarse de ofrecer al usuario opciones a nivel profesional.
Dreamweaver 4 siguió en la línea de la tercera entrega. El entorno es uno de sus puntos fuertes por su versatilidad, funcionalidad y facilidad de manejo. Se siguió con el sistema de ventanas flotantes, similares a las de Adobe Photoshop, con las que interactuábamos con nuestro diseño.
Dreamweaver MX y Dreamweaver MX 2004, dan un cambio estético manteniendo todo lo bueno, además de las pestañas, y los manuales que contiene, incluye la posibilidad de personalizar el entorno de tres maneras: Diseño (Visual), Código (Obvio) y mezclando ambos (para mi la mejor), que te permite control total en todos los aspectos de la pagina.
La pestaña que voy a comentar, es la de Propiedades, nos servirá para conocer con detalle cualquier característica del elemento en el que estemos situados, como por ejemplo la fuente, enlaces, colores o posición, ajustar el texto, ver las propiedades de la pagina, insertar archivos, poner vínculos, y mas. Todo eso con una sola Pestaña. También arriba en la barra de herramientas Común tienes objetos estructurados en tipos y con ellos puedes insertar fácilmente imágenes, tablas, formularios, subprogramas, secuencias de comandos invisibles o una de las novedosas características: botones de Macromedia Flash.
Comentarios recientes