Última actualización por at .

Subscribirme

* Este campo es obligatorio

Últimos post de los Foros

Gana dinero

Archivo mensual: septiembre 2010

Página 1 de 3123

Instalación de Apache en Windows

El proceso para instalar en 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 en ningún momento.

Descarga de Apache

El servidor web Apache se puede en la 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 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 fuente del programa. Si deseamos instalarlo en un sistema Windows, necesitamos obtener el archivo Win-32 Binary, que es un Windows.

Continua leyendo “Instalación de Apache en Windows” »

Inyección de Código SQL

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 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 (realizada en 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 en nuestra página (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:

  1. use web
  2.  
  3. -- Nuestra base de datos se llama web
  4. go
  5. -- Creamos una tabla para almacenar los pares usuario/contraseña
  6. create table usuarios (Usuario varchar (50) not null primary key, Password varchar (50))
  7. go
  8. -- Introducimos un par de datos de prueba
  9. insert into usuarios (Usuario, Password) values ('Admin', '1234')
  10. insert into usuarios (Usuario, Password) values ('Usuario', 'abcd')

Ahora veamos el código de las páginas que forman parte del proceso de login.

index.htm

  1. <form action="login.asp" method="post">
  2.        Nombre: <input type="text" name="txtUsuario"><br>
  3.        Password: <input type="password" name="txtPassword"><br>
  4.        <input type="submit">
  5. </form>

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

 Code: arbitrary (select
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.

<%
       Dim Usuario, Password, RS, SSQL
       Usuario = Request.Form("txtUsuario")
       Password = Request.Form("txtPassword")
       SSQL = "SELECT count(*) FROM Usuarios WHERE Usuario = '" & Usuario &
       "' AND password='" & Password & "'"
       Set RS = Server.CreateObject("ADODB.Recordset")
       RS.Open SSQL, "Cadena de conexion"
       If (RS.EOF) Then
          Response.Write "Acceso denegado."
       Else
          Response.Write "Te has identificado como " & RS("Usuario")
       End If
       Set RS = Nothing
%>

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á:

  1. SELECT Count(*) FROM Usuarios WHERE Usuario=’Admin’ AND Password=1234’”

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:

  1. "SELECT Count(*) FROM Usuarios WHERE Usuario = '' or '1'='1' AND password = '' or '1'='1'"

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 . Sentencias DDL, cambiar permisos, utilizar procedimientos almacenados y un largo etcétera. Qué ocurriría si alguien escribiese de contraseña cosas como:

  1. ' exec master..xp_cmdshell 'net user test /ADD' –

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:

  1. SSQL= "SELECT count(*) FROM Usuarios WHERE Usuario = '" & Replace
  2. txtUsuario.Text, "'", "''") & "' AND password='" & Replace
  3. (txtPassword.Text, "'", "''") & "'"

Otro factor importante en cuanto a la 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 que la inyección SQL pueda ser usada. Por ejemplo utilizando el siguiente procedimiento almacenado:

  1. CREATE Procedure Validar @usuario varchar(50), @password varchar(50) AS
  2. If (SELECT Count(*) FROM Usuarios WHERE Usuario=@Usuario and Password=@password)>0
  3. Return 1
  4. Return 0

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.

No disponible por mantenimiento programado. Vuelve a comprobarlo en unos minutos. Gracias

Cuando se realizan actualizaciones 3 pasa automáticamente a un modo de mantenimiento, es decir, nadie puede acceder al sitio durante la .  Si alguien consulta el obtendrá un mensaje como el siguiente:

No disponible por mantenimiento programado. Vuelve a comprobarlo en unos minutos. Gracias

O su versión en inglés.

Briefly unavailable for scheduled maintenance. Check back in a minute.

Algunas veces algo falla en la actualización de algunos , y el modo mantenimiento no se restaura automáticamente queda el sitio aislado.

Continua leyendo “No disponible por mantenimiento programado. Vuelve a comprobarlo en unos minutos. Gracias” »

Sistema de Recomendación en ASP con CDONTS

Este sistema permite al usuario enviar desde la , un e-mail a otra persona, invitándolo a visitar el sitio.

Solo requiere un que se encargará de mostrar el de recomendación, enviar el e-mail y devolver un acuse de envío. Os lo pongo a continuación.

Nota: Requiere que tu soporte Mail.

.asp

  1. <!-- formulario de recomendación -->
  2.  
  3. <% if request.querystring("accion") = "" then
  4.  
  5. %>
  6.  
  7. <form method="post" action="recomendar.asp?accion=enviar" name="recomienda">
  8.  
  9. <b>Recomienda este sitio</b><br><br>
  10.  
  11. Tu Nombre: <input type="text" name="n_remitente" size="10"><br>
  12.  
  13. Tu E-mail: <input type="text" name="e_remitente" size="20"><br>
  14.  
  15. Nombre de tu amigo: <input type="text" name="n_destinatario" size="10"><br>
  16.  
  17. E-mail de tu amigo: <input type="text" name="e_destinatario" size="20"><br><br>
  18.  
  19. <input type="submit" value="Recomendar">
  20.  
  21. </form>
  22.  
  23.  
  24. <!-- envío del formulario y acuse de envío o información de errores -->
  25.  
  26. <%
  27.  
  28. elseif request.querystring("accion") = "enviar" then
  29.  
  30.  
  31. ' recojo las variables que vienen desde el formulario
  32. n_destinatario = request.form("n_destinatario")
  33. e_destinatario = request.form("e_destinatario")
  34. n_remitente = request.form("n_remitente")
  35. e_remitente = request.form("e_remitente")
  36.       ' si los campos no están vacíos
  37.  
  38.       if n_destinatario <> "" and e_destinatario <> "" and n_remitente <> "" and e_remitente <> "" then
  39.  
  40.  
  41.        ' indica la url de tu sitio
  42.  
  43.        url = "http://www.tusitio.com"
  44.  
  45.        ' indica el nombre de tu sitio
  46.  
  47.        nombre_del_sitio = "Tu Sitio"
  48.  
  49.        ' indica el asunto del mensaje
  50.  
  51.        asunto = n_remitente & " te recomienda un sitio"
  52.  
  53.  
  54.       ' redacta el mensaje
  55.  
  56.       mensaje = "Hola " & n_destinatario & ":<br>"
  57.  
  58.       mensaje = mensaje & n_remitente & " te recomienda que visites <b>" & nombre_del_sitio & "</b>.<br>"
  59.  
  60.       mensaje = mensaje & "Puedes verlo en <a href='" & url & "'>" & url & "</a><br><br>Salu2!"
  61.  
  62.  
  63.       ' comienza envío
  64.  
  65.       Set envio = Server.CreateObject ("CDONTS.NewMail")
  66.  
  67.  
  68.       ' indica que el e-mail es en formato HTML
  69.       envio.BodyFormat = 0
  70.       envio.MailFormat = 0
  71.  
  72.  
  73.       ' envía el mensaje
  74.  
  75.       envio.Send e_remitente, e_destinatario, asunto, mensaje
  76.  
  77.       Set envio = Nothing
  78.  
  79.  
  80.       ' Informa al usuario que se ha enviado el mensaje
  81.  
  82.       reponse.write "<b>El mensaje ha sido enviado</b>.<br>Gracias por recomendarnos!"
  83.  
  84.  
  85.       ' si existen campos vacíos, envía un mensaje de error
  86.  
  87.       else
  88.  
  89.       response.write "Por favor, es necesario que completes todos los campos.<br>"
  90.  
  91.       response.write "<a href='recomendar.asp'>Pincha aquí</a> para corregir los campos."
  92.  
  93.       end if
  94.  
  95.  
  96. end if
  97.  
  98. %>

Espero que os sea de utilidad.

Seleccionar el texto de area con evento on mouse over

Para que el usuario que accede a nuestras páginas seleccione el en un campo de de (u otro) tan solo situando el sobre el mismo utilizaremos las siguientes :

  1. onMouseOver="this.focus()" onFocus="this.select()"

Vamos a realizar un ejemplo practico, imaginemos que tenemos un campo de texto en el ejemplo contiene el texto de un villancico:

Para que el texto del campo se marque o seleccione cuando el usuario sitúe el puntero sobre el mismo añadiremos la siguientes etiquetas al anterior:

  1. onMouseOver="this.focus()" onFocus="this.select()"

El resultado final sería:

  1. <textarea name="textarea" cols="50" rows="3" onMouseOver="this.focus()" onFocus="this.select()">
  2. Pastores a Belén... Pastores a Belén...
  3. vamos con alegría que ha nacido ya el hijo
  4. de María allí, allí nos espera Jesús...
  5. </textarea>

- El ejemplo práctico:

Manual de Promoción

Conseguir visitas para una web es relativamente fácil (la clave de esta frase es relativamente). El problema no esta en conseguirlas, sino que las que consigas sean las adecuadas para tu sitio (visitas de calidad) y por supuesto lo mas difícil, mantenerlas. Vamos a empezar por el principio.

Lo primero es, obviamente, hacer nuestra web. Nosotros sabemos que queremos hacer y desde luego, a que público vamos a dirigirnos. No lograremos nada si hacemos una web de encaje de bolillos y conseguimos 2.000.000 de visitantes interesad@s en coches deportivos. A lo mejor a alguno ademas de los coches deportivos, le interesa el encaje de bolillos, pero seria raro.

Luego esta el tema de mantener las visitas y lograr que nuestros propios visitantes nos recomienden a sus conocidos y amig@s. Para esto primero debemos tener contenidos. Si hacemos nuestra web de encaje de bolillos y al entrar no hay nada, ni artículos, ni noticias, ni manuales, ni fotos, ni nada, el visitante no volverá, “si es muy bonita, un diseño maravilloso, pero no encontré nada útil para mi”.

Tenemos que ofrecer buen . Esto es, si tenemos, por ejemplo, un de ayuda para elegir cañas de pescar, y no contestamos los (mensajes), mas que una vez a la semana, no lograremos visitantes fieles. Un aspecto muy importante en la promoción es fidelizar a los visitantes.

También debemos actualizar nuestros contenidos a menudo, todas las veces que podamos. Si al entrar hoy y volver a entrar dentro de un mes, todo sigue igual, nuestros visitantes irán entrando cada vez mas espaciados hasta que se cansen y dejen de entrar, “siempre encuentro lo mismo, ya me lo se de memoria”.

Solo con estos pequeños pasos, ya tendremos hecha la mayor parte. Pero claro, las visitas tienen que empezar a llegar, y no van a venir solas. Hay que conseguirlas. Para ello tenemos varias herramientas, algunas mas útiles que otras, otras casi inútiles, y algunas hasta perjudiciales. Las iremos viendo en los siguientes capítulos. Continua leyendo “Manual de Promoción” »

Ideas y proyectos con CMS

Últimamente he notado que muchos están algo desorientados y muchas veces ansiosos con tantos CMS que se pueden elegir para encarar un proyecto. Con este artículo no quiero coartarles esa inspiración que tienen, pero si quiero orientarlos un poco más para que puedan definirse por uno u otro sistema de portales.

En general, veo que muchos suponen que usando cualquier CMS lograrán llegar al mismo destino y ahí me parece que está el primer error. Cada uno de estos programas tienen características propias que lo hacen diferentes respecto de los otros y no entender esto llevará a y desorientación, algo que no ayudará a tomar una decisión correcta.

Cada día me encuentro con consultas del tipo comparativas: ¿qué tal es este comparado con este otro o con aquel?

Ese tipo de consultas están incompletas ya que al menos es necesario saber que clase de sitio quiere uno desarrollar para comenzar con las comparaciones.

Por experiencia les puedo decir que casi todos los usuarios crean comunidades de DESCARGAS, IMÁGENES, FOROS (comunidades) e INFORMACIÓN. Precisamente en ese orden.

Continua leyendo “Ideas y proyectos con CMS” »

Cómo integrar los Foros de Invision Power Board con PHP-Nuke

Estas instrucciones son posibles de realizar con 1.3 y 1.3.1. Lo primero de todo, es recomendable que instaléis el en el directorio /Forums o /. Y también que tengáis en cuenta que este manual va dirigido especialmente a los que uséis Edición . Este Manual esta hecho con la 3.1.2 pero también funcionara con otras. A los que uséis otras también os valdrá, pero seguramente los números de las lineas varíen.

Tenemos que realizar varios cambios tanto en los Foros Invision como en vuestro Nuke
Continua leyendo “Cómo integrar los Foros de Invision Power Board con PHP-Nuke” »

Cómo poner un mensaje en la parte inferior del navegador

La verdad que es muy fácil. Se crea mediante javascript con este :

  1. <script language=javascript><!--
  2.  
  3. var txtStatus=' www.paginadeinicio.net. Chat, Foros, Zona de Rol, Manuales, Webmaster, Cine, Anime, Manga, etc. ';
  4. var timeEspera=200; // tiempo que ha de esperar entre carácter y carácter
  5. var recarga=true; // si ha de reiniciarse cuando termina (true/false)
  6.  
  7. function correStatus(posStatus){
  8. if (posStatus < txtStatus.length){
  9. posStatus+=1
  10. window.status=txtStatus.substring(0,posStatus)}
  11. else {if (!recarga) return true; else posStatus=0}
  12. setTimeout("correStatus("+posStatus+")",timeEspera)}
  13.  
  14. correStatus(0)
  15.  
  16. //--></script>

Copiar el del código dentro del editor de Notas normal y cambiar las variable iniciales donde pondremos las propias y salvar los cambios como mensaje.js

Subirlo al creando una carpeta llamada , que la ruta del archivo quedaría: /mensaje.js

Editar el archivo includes/my_header.

Antes del tag que cierra el código php ?> introducir la llamada al archivo de esta forma:

  1. include("scripts/mensaje.js");
  2. ?&gt;

Y listo, ya lo tenéis funcionando. Acordaros de estos cambios cuando actualicéis vuestro Nuke, o los perderéis. Quiero agradecer a Khakism (http://www.khakism4) la información necesaria para este , ya que sin su ayuda no habría podido hacerlo.

Hacerse Autónomo paso a paso

Para ser teletrabajador es preciso acogerse al Seguro de Autónomos de la . Aquí os ofrecemos detalladamente los pasos que debéis realizar para ser un trabajador Autónomo. Para más información, podéis dirigiros a la de la social:

http://www.seg-social.es

Continua leyendo “Hacerse Autónomo paso a paso” »

Página 1 de 3123
           
septiembre 2010
L M X J V S D
« ago   oct »
 12345
6789101112
13141516171819
20212223242526
27282930  

Nube de Tags