Categories
CSS Diseño Web

Todo listo para el “CSS Naked Day”

CSS Naked Day, es un evento que se realiza cada 5 de abril y tiene como objetivo promover el uso de estándares web.

Para participar, lo único que tienen que hacer es quitar todas las hojas de estilo y dejar que se muestre sólo la estructura de vuestros sitio. Si utilizan WordPress y quieren formar parte de este evento, puedes utilizar el siguiente plugin:

php:

<?php
/*
Plugin Name: CSS Naked Day
Plugin URI: http://www.buayacorp.com/
Description: Elimina todas las hojas de estilo definidas en la cabecera del tema que actualmente usas.
Author: Alexander Concha
Version: 1.0
Author URI: http://www.buayacorp.com/
*/

function is_naked_day() {
        return '0405' == mysql2date('md', current_time('mysql'));
}
function css_naked_stylesheet($stylesheet_uri) {
        if (is_naked_day()) {
                return '';
        }
        return $stylesheet_uri;
}
function css_naked_head() {
        if (is_naked_day()) {
                $header = ob_get_contents();
                ob_end_clean();
               
                $header = preg_replace('|<link.*?rel="stylesheet"[^>]*>|is', '', $header);
                $header = preg_replace('|<style[^>]*>.*?</style>|is', '', $header);
               
                print $header;
        }
}
add_filter('stylesheet_uri', 'css_naked_stylesheet');
add_filter('wp_head', 'css_naked_head', 100);
?>

Lamentablemente el código mostrado no elimina el CSS generado por otros plugins, así que hay que modificar manualmente éstos -pueden usar la función is_naked_day para determinar si es el día indicado o no 😉

Actualización: Sergio publicó una versión más genérica, pero usando javascript.

Categories
Frases Miniposts

La Universidad

La Universidad debiera insistirnos en lo antiguo y en lo ajeno. Si insiste en lo propio y lo contemporáneo, la Universidad es inútil porque está ampliando una función que ya cumple la prensa — Jorge Luis Borges. (1899-1986) Escritor argentino.

Categories
Seguridad Web WordPress XSS

Problemas de seguridad con WordPress 2.x y el plugin pagebar

Debido a unos cambios hechos en la función get_pagenum_link de las ramas 2.0 y 2.1 de WordPress, varios blogs que usan el plugin pagebar son vulnerables a XSS.

Si alguno de ustedes usa el mencionado plugin y se muestra algún mensaje con la siguientes direcciones URL, entonces necesitan modificar ciertas cosas:

code:

http://tublog.com/index.php?"><script>alert(/XSS/)</script><&paged=2
http://tublog.com/index.php/"><script>alert(/XSS/)</script><&paged=2

Para corregir el problema descrito en el plugin pagebar, tienen que escapar el valor devuelto por get_pagenum_link con las funciones attribute_escape o clean_url. Por si alguien desea, puede bajar la versión modificada o aplicar el parche que corrige estos problemas.

Categories
PHP Seguridad Sql Injection Web

Ejercicio de fin de Semana: Evitar SQL Injection con PHP

A través de tweako (visto hace algunos minutos en menéame) llegué a un artículo -en inglés- que explica como protegerse de ataques de Inyección de SQL con PHP. En el mencionado artículo, en la última parte aparecen las siguientes dos porciones de código:

php:

<?php

# Ok, so I'm going to oversecure a query to the database that selects an article
# by using the given article ID.
# Here is the code.

//Database connection is present
//Make sure that the id is actually given

if (isset($_GET['id']))
{
        $id = $_GET['id'];
}
else
{
        die('Please provide an article ID');
}
 
//Make sure that its an integer
if (is_integer($id))
{
        die('Please enter a valid article ID');
}
 
//Validate that its in between the ranges 1 and 10,000
if ($id < 1 || $id > 10000)
{
        die('Please enter a valid artile ID');
}
 
//Construct the query
$SQL = "SELECT * FROM posts WHERE postID = '".$id."'";

echo $SQL; // Línea agregada

?>

php:

<?php

# This next one will validate a username before its entered into the database.

//Database connection is present
//Make sure that the id is actually given
if (isset($_GET['username']))
{
        $username = $_GET['username'];
}
else
{
        die('Please provide a username');
}
//Get the length of the username
$length = strlen($username);
//Validate the length
if ($length < 3 || $length > 20) // parte modificada
{
        die('Please enter a username between 3 and 20 characters long');
}
//Make sure that its safe to enter the database.
$username = mysql_real_escape_string($username);
//Construct the query
$SQL = "SELECT * FROM username WHERE username = '".$username."'";
//Show the username
echo 'Username: '.stripslashes($username);
//Send the query and close the connection to the database

?>

Los códigos mostrados ¿son correctos? si no es así, ¿qué errores tiene?.

Categories
Diseño Perú Varios Web

Diario El Comercio estrena “nueva” Web

El Comercio, es uno de los diarios más leídos de Perú y al parecer acaba de estrenar una "nueva" versión de su sitio Web. Giovanni Lamarca hace el siguiente resumen de las novedades:

1. Tiene radio! Por fin un medio multimedia. Ya Terra había incluido la señal de Canal N (y RPP texto), pero esto es distinto. Esto es un periódico que suena e incluye video. Dejo el tema del YouTube para otro post. 🙂

2. Lo más importante arriba y claro Y lo más importante es que yo escoja qué quiero leer. Si la web, si la edición impresa, si los clasificados. 🙂

3 Publicidad entrometida (literalmente) No son los odiosos pop ups que se abren sin que uno les pregunte y aunque se estila usarla como divisor (separa la cabecera de las notas horarias), me resulta un poco grande. Depende del tenor del aviso para tener un elemento que alegre o, en todo caso, desentone. Sobre gustos y colores… 🙁

4 Tags! Por fin sabremos qué palabras o temas son los que más se leen en el diario. La nubecita de palabras (algunas más grandes que otras) indican, por su tamaño, los items o criterios de busqueda o cantidad de apariciones de determinado tema en la edición web. 😉

5 Blogs! Válgame Dios! Y con posibilidad para comentarios! Merece tomarse una res en el Queirolo!

6 Incertidumbre Finalmente, un espacio para ser llenado con interactivos que, desde mi punto de vista, costará encontrarles un común denominador. Foros, mail de contactos, juegos, información de mercado, guías, ediciones anteriores, RSS… mmm Lo bueno es que queda pampa. Harta pampa

Saldo positivo y muchas felicitaciones!!!

Sinceramente no comparto el fanatismo de Giovanni por un trabajo que, en mi opinión, deja mucho que desear; estos son sólo algunos de los puntos en contra que veo:

  • Varias secciones son prácticamente inutilizables si no se tiene javascript habilitado.
  • Demasiado contraste en los colores -- al momento de escribir estas líneas todavía estoy un poco cegado por el amarillo intenso que usaron 😛
  • Hay demasiado desorden, no pude encontrar varias de las cosas que menciona Giovanni 😀

La versión anterior me parece que al menos era un poco más sobria y más usable que esta nueva versión (imagen capturada con Firefox)