miércoles, 30 de septiembre de 2009

FCKeditor para mediawiki (BUG)

Yo uso en una enciclopedia la herramienta Mediawiki y para hacer más sencillo la edicion a los usuarios, le puse la extensión FCKeditor, pero me trae algunos problemas como por ejemplo cuando le pongo a las imágenes que usen thubnail y le pongo un texto alternativo se me pierde el texto alternativo, esto lo arregle de esta forma:
edito includes/parser/Parser.php (line 4394)

# In the old days, [[Image:Foo|text...]] would set alt text. Later it
# came to also set the caption, ordinary text after the image -- which
# makes no sense, because that just repeats the text multiple times in
# screen readers. It *also* came to set the title attribute.
#
# Now that we have an alt attribute, we should not set the alt text to
# equal the caption: that's worse than useless, it just repeats the
# text. This is the framed/thumbnail case. If there's no caption, we
# use the unnamed parameter for alt text as well, just for the time be-
# ing, if the unnamed param is set and the alt param is not.
#
# For the future, we need to figure out if we want to tweak this more,
# e.g., introducing a title= parameter for the title; ignoring the un-
# named parameter entirely for images without a caption; adding an ex-
# plicit caption= parameter and preserving the old magic unnamed para-
# meter for BC; ...
if( $caption !== '' && !isset( $params['frame']['alt'] )
&& !isset( $params['frame']['framed'] )
&& !isset( $params['frame']['thumbnail'] )
&& !isset( $params['frame']['manualthumb'] ) ) {
$params['frame']['alt'] = $params['frame']['title'];
}

Comentando esta linea me funciono todo bien.
$params['frame']['alt'] = $params['frame']['title'];

jueves, 5 de marzo de 2009

FPDF

Que es FPDF?

FPDF es una clase escrita en PHP que permite generar documentos PDF directamente desde PHP, es decir, sin usar la biblioteca PDFlib. La F de FPDF significa Free (gratis y libre): puede usted usarla para cualquier propósito y modificarla a su gusto para satisfacer sus necesidades.

FPDF tiene otras ventajas: funciones de alto nivel. Esta es una lista de sus principales características:

  • Elección de la unidad de medida, formato de página y márgenes
  • Gestión de cabeceras y pies de página
  • Salto de página automático
  • Salto de línea y justificación del texto automáticos
  • Admisión de imágenes (JPEG, PNG y GIF)
  • Colores
  • Enlaces
  • Admisión de fuentes TrueType, Type1 y codificación
  • Compresión de página

FPDF no necesita de ninguna extensión para PHP (excepto zlib para activar la compresión y GD para soporte a GIF) y funciona con PHP4 y PHP5.


Los tutoriales le permitirán empezar rápidamente a usar FPDF. La documentación completa (on line) se encuentra aquí y el área de descarga, aquí. Se recomienda encarecidamente que lea las FAQ (o PMF: preguntas más frecuentes), que listan las preguntas y problemas más comunes (especialmente los relacionados con los navegadores).

Existe una sección de scripts que incluye algunas extensiones útiles.


Bueno les dejo esto solamente, para que lo usen.Yo lo estoy usando luego les dejo mis impreciones sobre esta herramienta.



Editor de .htaccess online

Esta noticia la vi hace muy poco y me resulto de mucha importancia, por que muy poco se conoce de esta poderosa herramienta.

"Buena herramienta que nos permite crear ficheros .htacces de forma online, muy útil para aquellos que no tienen conocimientos de Apache pero que necesitan modificar el .htaccess.

Mediante diferentes opciones y formularios, nos permite rellenar los datos necesarios para que nos vaya devolviendo el .htaccess final. Este editor nos facilita la labor a la hora de: no permitir el acceso a ficheros, autenticacion, páginas de error, páginas por defecto, redirecciones y restricción de accesos."

.htaccess Editor

 

miércoles, 4 de marzo de 2009

Cerificados en IIS y Apache

Mucho se ha hablado sobre los certificados y su uso y no es un secreto para nadie las ventajas que esto trae sobre todo en la seguridad, pero hay poca documentación practica de su uso yo comparto con uds mi experiencia en aplicaciones web.

Primero que nada deben tener instalado un servidor web sea IIS o Apache y configurarlo para que solo se acceda de modo seguro (entiendase por esto https).

Luego configurar los servidores web para que solo acceda un usuario que tenga certificado, luego de esto podemos saber y definir que usuarios con certificados pueden acceder  a tu aplicacion web y hasta crear una session.

Veamos la variable $_SERVER (arreglo) tiene los datos del certificado haciendo algo como esto los obtenemos todos:

foreach( $_SERVER as $key => $value ) {
   echo "$key --> $value<br>\n";
}

pero no es lo que queremos solamente el nombre, pero este esta en $_SERVER["CERT_SUBJECT"]; imprimiendo esta variable sacamos todos lo datos del certificado cliente, pero si solo queremos el nombre hariamos algo como esto:

$cadena_original = $_SERVER["CERT_SUBJECT"];

$posicion = $posicion = strpos($cadena_original, "CN");

$nombre = substr($cadena_original, $posicion+3);

echo "Hola $nombre";

La primera linea de codigo ya la esplique.
La segunda establece la posicion donde aparece el Comon Name(CN) y mas tarde...
En la linea tres cojemos el nombre y lo guardamos en la variable $nombre luego solo nos queda mostrarlo o...


$_SESSION['login']     = "$nombre";

y asi queda creada la sesion con el CN del certificado de usuario.

Muchas gracias y si no entienden algo comenten sera un gusto responderles.



jueves, 26 de febrero de 2009

Instalar PHP en IIS con funciones Microsoft SQL y MySql

He encontrado un tutorial que me ha servido muchisimo para instalar PHP en un servidor web iis 6.0, les voy a dejar el vinculo para que puedan aceder a esta informacion y asi agradecer al creador.
Disfrutenlo....

Nota es importante que sepan que si sale la paguina de php en blanco es muy posible que sea por que los tags de php en iis deben ser de tipo asp ej:
<?php ?>  Correcto
<? ?>       Incorrecto

martes, 3 de febrero de 2009

Usando certificados SSL II

Utilizaremos el paquete Openssl para generar los certificados. De no tenerlo instalado publicare mas adelante otro articulo con ejemplos de cómo hacerlo, también hay mucha bibliografía de esto por la red por si estas apurad@.
Teniendo ya instalado el Openssl.
Primero creamos el certificado y la clave privada de nuestra autoridad de certificación:
1. req -x509 -newkey rsa:2048 -days 3650 -keyout CAXplotaKey.pem -out CAXplotacert.pem
Lo más importante de este comando es el parámetro days, ya que no queremos que dentro de un año nos caduque el certificado de nuestra propia entidad. Yo le pongo 10 años. Este comando genera dos archivos, la clave privada con la que firmaremos nuestros futuros certificados y el certificado con la clave pública que instalaremos, si queremos no recibir avisos, en el navegador. Este comando te pedirá algunos datos (nombre de empresa, país…) y, sobre todo, una contraseña. Deberás recordarla cada vez que vayas a firmar un certificado SSL, así que no la olvides. Ya tenemos nuestra CA creada.
Creamos ahora el certificado SSL para nuestro dominio (Servidor Web):
1. genrsa -des3 -out claveprivada.pem 2048
2. req -new -key claveprivada.pem -out certificado.pem
El primer comando crea la clave privada de nuestro certificado. Te pedirá otra contraseña, esta vez para la clave privada. Recuérdala también.
El segundo comando genera la petición de certificado sobre la clave privada anterior. Te pedirá la contraseña de la clave privada anterior. Es importante que el CN o Comun Name de este certificado sea la url del servidor web o servidor virtual es decir infosoc.cu, google.com, localhost, 127.0.0.1 etc.
De darte el error “Unable to load config info from /usr/local/ssl/openssl.cnf”, Es que seguramente estas trabajando en Windows debes especificar donde esta el archivo openssl.cnf con el comando –config y luego la dirección.
En este punto tenemos cuatro archivos, la clave y el certificado de tu CA y la clave y la solicitud de tu certificado SSL. Sólo queda firmar el certificado con nuestra CA y ya podremos utilizarlo.
Nota: En algunos casos pude no serte útil la clave de tu certificado en .pem así que puedes cambiarle el formato de esta manera:
1. rsa –in claveprivada.pem -out claveprivada.key

Para poder firmar la petición de certificado y así generar nuestro certificado debemos generar primero un fichero de texto con algunos parámetros de configuración:
cat configservidor.cnf
1. basicConstraints = critical,CA:FALSE
2. extendedKeyUsage = serverAuth
Y firmamos el certificado.
1. x509 -CA CAXplotacert.pem -CAkey CAXplotaKey.pem -req -extfile configservidor.cnf -in certificado.pem -days 3650 -CAcreateserial -sha1 -out certificado-servidor.pem
Ya tenemos un certificado SSL preparado para utilizar en nuestro servidor web. En nuestro caso es certificado-servidor.pem.
Certificados de cliente
Ahora que ya tenemos el certificado de nuestro servidor web (autofirmado) llega el momento de crear certificados para nuestros clientes de manera que si alguien intenta acceder a nuestra aplicación sin uno de ellos se le prohíba el paso.
Crearemos primero un archivo de configuración con los parámetros que necesitaremos.
cat configcliente.cnf
1. basicConstraints = critical,CA:FALSE
2. extendedKeyUsage = clientAuth
Con esto daremos instrucciones de que es un certificado cliente a la hora de firmar el certificado.
Creamos ahora, igual que hacíamos antes, la clave privada y la solicitud de certificado.
1. genrsa -des3 -out clave-cliente.pem 2048
2. req -new -key clave-cliente.pem -out certificado-cliente-req.pem
Como antes, al generar la clave te pedirá una contraseña que deberás introducir después, al hacer la solicitud de certificado. Los datos que te pide esta solicitud, como ocurría antes, los podrás leer posteriormente para comprobar datos o lo que estimes oportuno, así que es importante que prestes atención.
Firmamos ahora el certificado con nuestra CA:
1. x509 -CA CAXplotacert.pem -CAkey CAXplotaKey.pem -req -in certificado-cliente-req.pem -days 3650 -extfile configcliente.cnf -CAcreateserial -sha1 -out certificado-cliente.pem

Bien, pero ¿no quedamos que es el cliente el que debe instalar el certificado? Sí, ahí vamos ahora. El certificado que acabamos de generar lo debes instalar en tu navegador web, no en el servidor, así que habrá que convertirlo a algún formato que puedan entender. Para esto hacemos lo siguiente:
1. openssl pkcs12 -export -in certificado-cliente.pem -inkey clave-cliente.pem -certfile CAXplotacert.pem -out cliente.p12
Nos pedirá la contraseña de la clave privada del certificado y nos solicitará otra para el que va a generar. Es importante poner contraseña al certificado final ya que es el que vas a enviar a tus usuarios y pretendes que sólo estos puedan utilizarlo, así que poner una contraseña nunca está demás.

Esto es todo por ahora posteriormente les diré como configurar el servidor apache para que trabaje bajo https y pida los certificados de los clientes para poder ver los contenidos web.

lunes, 2 de febrero de 2009

Usando certificados SSL I

A menudo creamos aplicaciones web con un backend de gestión que, por ser también web, exponemos públicamente a cualquiera que consiga averiguar la URL. Habitualmente estos sistemas son de acceso restringido, sólo un pequeño grupo de usuarios lo utiliza.

En escenarios donde tenemos un número de usuarios acotado y se necesita autenticación, se puede utilizar un mecanismo de certificados que aporten mayor seguridad al sistema, de esta manera solo aquellos usuarios que tengan el certificado en cuestión tendrán acceso a la máquina.

En este grupo de artículos veremos como permitir el acceso a nuestra aplicación a aquellos usuarios que dispongan de un certificado que previamente les habremos enviado mientras que si no lo tienen no podrán acceder de ningún modo. Este método se puede combinar, además, con el tradicional usuario/clave para dar mayor seguridad. Podremos incluso verificar que el nombre de usuario que se intenta utilizar se corresponde con el certificado de usuario que le hemos enviado y no intenta autentificarse con otro.

Conceptos básicos sobre certificados SSL
El método que vamos a ver se basa en certificados SSL. Se utilizan para asegurar la información entre un cliente y el servidor y prevenir escuchas ya que la información viaja encriptada. Ésta es su función y la hace aunque no esté firmado por una autoridad certificadora (CA) oficial o, incluso, aunque esté caducado. Sigue asegurando las comunicaciones.

Los navegadores web reconocen, por defecto, una serie de autoridades certificadoras como Verisign o Thawte, aunque hay muchas más. Puedes verlas todas en las opciones de tu navegador. Pero, ¿qué es realmente lo que hace una Autoridad Certificadora? Firmar. Firma tu certificado SSL asegurando que os pertenece a ti y a tu dominio. Cuando un cliente accede a tu dominio y descarga el certificado SSL, busca dentro de sus certificados de CA’s si hay alguno que lo haya firmado. Si lo encuentra, acepta tu certificado y no ocurre nada especial, pero si no encuentra la CA lanza un aviso indicando que no se reconoce la autoridad que lo firma. Esto no quiere decir que el certificado no sea válido, lo único que ocurre es que no sabe quien lo firma. Esto significa, por tanto, que tú mismo puedes ser tu propia autoridad certificadora y firmar tus certificados, funcionarán perfectamente y cumplirán su cometido de asegurar las comunicaciones cliente/servidor.

Comercialmente o en sistemas de acceso público en general, no se recomiendan certificados autofirmados ya que el aviso de autoridad de certificación no reconocida generará desconfianza entre tus usuarios, pero en entorno intranet o de paneles de adminsitración es un método ideal.
El servidor puede requerir, además, otro certificado al cliente, de manera que ámbos extremos autentifiquen la comunicación. Esto es precisamente lo que vamos a hacer hoy en este artículo.

Según lo que hemos explicado, los certificados autofirmados son igual de seguros que los firmados por una autoridad certificadora. Como en el ejemplo que estamos viendo estamos asegurando el acceso a nuestra aplicación para un grupo reducido de usuarios, no hay ningún problema en utilizar un certificado firmado por nosotros mismos ya que nuestros usuarios sabrán que no hay ningún problema. Pero esto no es todo, por esta misma razón podemos decir a los usuarios que se instalen el certificado público de nuestra CA, tal y como hacen las CA oficiales, y automáticamente el navegador comenzará a confiar en nuestros certificados ya que, ahora sí, tiene un certificado de una CA que firma los certificados SSL.

Como resumen, nuestro trabjo consistirá en:
• Crear nuestra autoridad certificadora y su certificado.
• Crear el certificado SSL para nuestro servidor web firmado por nuestra CA.
• Crear los certificados de cliente para nuestros usuarios.
• Habilitar la lectura de los datos SSL desde PHP.

martes, 27 de enero de 2009

NuSOAP I

SOAP

“Siglas de Simple Object Access Protocol, es un protocolo estándar creado por Microsoft, IBM y otros, está actualmente bajo el auspicio de la W3C que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML. SOAP es uno de los protocolos utilizados en los servicios Web”.

WSDL

“Son las siglas de Web Services Description Language, un formato XML que se utiliza para describir servicios Web. La versión 1.1 está en estado de "propuesta de recomendación" por parte del W3C.

WSDL describe la interfaz pública a los servicios Web. Está basado en XML y describe la forma de comunicación, es decir, los requisitos del protocolo y los formatos de los mensajes necesarios para interactuar con los servicios listados en su catálogo. Las operaciones y mensajes que soporta se describen en abstracto y se ligan después al protocolo concreto de red y al formato del mensaje”.


SERVICIO WEB

“Un servicio Web (en inglés Web service) es una colección de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes y ejecutadas sobre cualquier plataforma pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet. La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la arquitectura y reglamentación de los servicios Web. Para mejorar la interoperabilidad entre distintas implementaciones de servicios Web se ha creado el organismo WS-I, encargado de desarrollar diversos perfiles para definir de manera más exhaustiva estos estándares”.