Agregando botones al editor HTML de Wordpress.

Mayo 10, 2008 por Signum · Sin comentarios
Publicado en: Mi página, Otros útiles 

Últimamente he estado usando varias tags que no se encuentran en el Editor HTML de Wordpress y como pueden imaginarse, yo no uso el editor visual de wordpress porque tarda más en cargar la página y porque nunca me ha ido bien con él sobre todo para colocar imagenes.

Soy de los que prefiere al estilo “rudo” como me gusta llamarlo. De hecho los textos que publico en mi blog en su mayoría los hago en scite o notepad++ y luego los paso a Wordpress.

Hay un tag en especial que no está en el editor HTML y que estoy usando bastante que es el tag de <pre></pre> donde en su mayoría coloco cosas como comandos o códigos. Anteriormente utilizaba el blockquote pero comienzo a preferir el pre.

Como [pre] no está en los botones del editor HTML decidí agregarlo y quizá algún otro como el de color de fuente :). Para poder agregar un botón debemos modificar el fichero quicktags.js que se encuentra en /wp-ncludes/js

Ahora justo debajo del siguiente texto:

/*
edButtons[edButtons.length] =
new edButton('ed_next'
,'page'
,'<!--nextpage-->'
,''
,'p'
,-1
);
*/

Incluiremos lo siguiente:

edButtons[edButtons.length] =
new edButton('ed_shAS'
,'pre'
,'
,'<pre>'
,'</pre>'
'
,''
);

Donde ‘pre’ es el nombre que tendrá el botón en la barra de botones HTML de Wordpress, ‘<pre>’ será el tag de apertura y ‘</pre>’ el cierre del tag.

Yo he agregado varias tags extra para hacerme las cosas más sencillas y no perder tanto tiempo escribiendolas, agrega las que gustes también ;).

Salu2

Configuración de Conky para Core 2 Duo o doble núcleo.

Mayo 10, 2008 por Signum · Sin comentarios
Publicado en: Linux, Software Libre 

Conky es un programa para GNU/Linux que tiene la función de mostrarnos información actualizada de nuestro sistema como el uso de recursos, la hora, la fecha, el kernel, los procesos en ejecución, el espacio libre… etc, etc, etc….

Hice una configuración para computadores doble núcleo el cual quedó así:

La configuración no es exactamente mía, está hecha en base a 2 configuraciones que encontré en la red; para ser exactos estas 2: Conky-gon (sacado del repositorio de configuraciones oficiales de conky) y Conky: Dual Core Processors in .conkyrc Tomé lo que me agradó más de cada una y lo uní o modifiqué a mi archivo de configuración.

La configuración muestra:

  • Fecha y Hora
  • Versión del Kernel
  • Uso del CPU, tanto por cada núcleo como el average de uso completo.
  • Uso de memoria.
  • Uso de archivo Swap (intercambio)
  • Uso de disco duro.
  • Uso de red de eth0, descarga (dowload) y subida (upload)
  • Espacio libre en las unidades (configuradas por el usuario)
  • Algunos procesos en ejecución.
  • La configuración es la siguiente:

    TEXT
    ${color white}[${color #00ff00}Tu_nombre${color white}][${color red}$nodename${color white}] -
    ${color #888888}$sysname $kernel ${color #CCCCCC}on ${color #888888}$machine
    ${color #888888}Uptime: $uptime
    ${color #888888}${time %b/%a/%d}                     ${color #00ff00}${time %k:%M:%S}
    ${color white}${hr 2}
    ${color #ffccaa}Procesador:
    
    ${color #888888}Uso (Core 1):${color #42AE4A} ${freq_dyn_g cpu1}Ghz ${color lightgrey}${cpu cpu1}% ${alignr}${color lightgrey}${cpubar cpu1 5,80}
    ${color #888888}Uso (Core 2):${color #42AE4A} ${freq_dyn_g cpu2}Ghz ${color lightgrey}${cpu cpu2}% ${alignr}${color lightgrey}${cpubar cpu2 5,80}
    
    ${color #888888}Core 1 $alignr Core 2
    ${color #888888}${cpugraph cpu1 25,120 ff0000 ff00ff} ${color color #42AE4A} $alignr${color #888888}${cpugraph cpu2 25,120 ff0000 ff00ff}
    ${color #888888}Average: ${color #CCCCCC}${cpu}%
    ${color #888888}${cpugraph 25 ff0000 ff00ff}
    ${color white}${hr}
    
    ${color #888888}Ram:${color lightgrey} $mem/$memmax ($memperc%) ${alignr}${color lightgrey}${membar 5,100}
    ${color #888888}Swap:${color lightgrey} $swap/$swapmax ($swapperc%) ${alignr}${color lightgrey}${swapbar 5,100}
    ${color #888888}HD IO: ${color lightgrey}${diskio}
    ${color #888888}${diskiograph 42AE4A eeeeee}
    ${color #888888}Procesos: ${color #CCCCCC}$processes	${color #888888}Corriendo: ${color #CCCCCC}$running_processes
    ${color white}${hr}
    
    ${color #ffccaa}Red:${color #BBBBBB} eth0-
    ${color #888888}DOWN: ${color #CCCCCC}${downspeed eth0} k/s	    ${color #888888}UP: ${color #CCCCCC}${upspeed eth0} k/s
    ${color #888888}${downspeedgraph eth0 25,100 ff0000 0000ff}	  ${color #888888}${upspeedgraph eth0 25,100 0000ff ff0000}
    ${color #888888}TOTAL: ${color #CCCCCC}${totaldown eth0}	        ${color #888888}TOTAL: ${color #CCCCCC}${totalup eth0}
    
    ${color #ffccaa}Espacio libre:
    ${color #888888}/sda1 : ${color #CCCCCC}${fs_used /sda1}${color #888888}/${color #CCCCCC}${fs_size /sda1} ${color #888888}(${color #CCCCCC}${fs_free /sda1} ${fs_free_perc /sda1}% ${color #888888} free)
           ${fs_bar /sda1}
    ${color #888888}/unidad2 : ${color #CCCCCC}${fs_used /boot}${color #888888}/${color #CCCCCC}${fs_size /unidad2} ${color #888888}(${color #CCCCCC}${fs_free /unidad2} ${fs_free_perc /unidad2}% ${color #888888} free)
           ${fs_bar /unidad2}
    ${color #888888}/unidad3 : ${color #CCCCCC}${fs_used /unidad3}${color #888888}/${color #CCCCCC}${fs_size /unidad3} ${color #888888}(${color #CCCCCC}${fs_free /unidad3} ${fs_free_perc /unidad3}% ${color #888888} free)
           ${fs_bar /unidad3}
    ${color #888888}/unidad4 : ${color #CCCCCC}${fs_used /usr}${color #888888}/${color #CCCCCC}${fs_size /unidad4} ${color #888888}(${color #CCCCCC}${fs_free /unidad4} ${fs_free_perc /unidad4}% ${color #888888} free)
           ${fs_bar /unidad4}
    ${color #888888}/unidad5 : ${color #CCCCCC}${fs_used /unidad4}${color #888888}/${color #CCCCCC}${fs_size /unidad4} ${color #888888}(${color #CCCCCC}${fs_free /unidad4} ${fs_free_perc /unidad4}% ${color #888888} free)
           ${fs_bar /unidad4}
    
    ${color #ffccaa}Procesos:
    ${color #CCCCCC}Nombre            PID     CPU%   MEM%
    ${color #ddaa00} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
    ${color #888888} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
    ${color #888888} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
    ${color #888888} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
    ${color #888888} ${top name 5} ${top pid 5} ${top cpu 5} ${top mem 5}

    Este texto lo pegas en un archivo llamado conky.conf y luego lo mueves a /etc/conky. Recuerda personalizarlo a tu gusto ;).

    Páginas de referencia:

  • Página oficial del proyecto Conky
  • Página con la lista de variables y sus usos
  • Salu2

    Unos comentarios acerca del decreto 3390 en Venezuela.

    Mayo 10, 2008 por Signum · 1 Comentario
    Publicado en: Linux, Software Libre 

    Para los que no sepan el decreto 3390 en Venezuela trata de aplicar sobre la administración pública software libre; esto quiere decir que “en teoría” aquellas instituciones públicas del estado (como CANTV) deben usar software libre en sus estaciones de trabajo (lo peor es que aún usan Windows 2003 server -.-!). Realmente el decreto no está mal, de hecho llegué a leer la mayor parte del decreto y está bastante chévere.

    Para los neófitos que no saben nada de computadoras o wintendistas este cambio es para peor, por una parte porque no saben manejar el sistema y por la otra porque sin wintendo no viven.

    Algunos no entienden o simplemente no saben de qué hablan y no toman en cuenta los beneficios del software libre que son mucho mayores al software privativo. En torno a este decreto hay un paradigma y es el hecho de que según algunas personas este decreto fue declarado porque el gobierno odia al “Imperio” y quiere safarse totalmente de él; quien sabe… quizá sea cierto pero quizá no.

    Leyendo este tema Respondiendo a la opinión del Universal.com me conseguí con un artículo de El Universal donde hacen unos comentarios acerca de la implementación de software libre en Venezuela y GNU/Linux, entre otras cosas se nota que el que escribió el comentario tiene pocos conocimientos de la administración de sistemas a nivel de empresas, haré algunas citas del documento:

    La diatriba Linux-Microsoft se puede reducir a una palabra: dinero. ¿Por qué pagar por usar los programas de Windows si puede obtener Linux gratis? Básicamente Linux (creado por Linus Torvalds quien supervisa todos los cambios sugeridos a la plataforma por los usuarios) enfoca su funcionamiento en la lealtad de las personas y las relaciones entre éstas para garantizar que el software sea gratuito y las personas sean libres de modificarlo o personalizarlo de acuerdo con sus gustos.

    Ciertamente, uno de los enganches para quitarse el problema de M$ encima es decir que el software libre es gratis pero no es la única cosa por la que es mejor. Dejando a un lado el hecho de que puedo modificar a mi antojo el sistema y que lo puedo distribuir de manera gratuita también hay otro detalle importante… La cantidad de malwares que afectan a un sistema GNU/Linux a nivel de usuario son escasos, no digo que no hayan pero son poco comunes. La cantidad de vulnerabilidades es inferior a un sistema Windows, la manejabilidad y administración a nivel de redes es mucho mejor, más perfecto y eficiente (siempre y cuando el administrador sepa hacer todo y bien), las opciones de personalización son mayores, la cantidad de problemas siempre y cuando se haga todo bien son inferiores y creo que más importante es… ¿Cada cuánto necesitas cambiar el computador con Linux?. Si el gobierno pensara en instalar WIndows Vista en la actualidad más de 70% de los computadores deberían ser cambiados, con GNU/Linux aseguro que eso no sucedería ;).

    A la final, en este aspecto el comentarista tiene poco conocimiento y se nota!.

    Desafortunadamente a las personas que se les impone Linux no se sienten libres. En las últimas semanas he tenido que lidiar con las quejas de mis amigos que trabajan en las dependencias públicas, ministerios y demás organismos del Estado venezolano porque no pueden desarrollar con Linux lo que tradicionalmente hacían con Windows. Además de la ausencia de programas está la restricción para que los nuevos usuarios “modifiquen” los programas instalados, o instalen nuevas versiones o aplicaciones. ¿Esta decisión no va en contra del principio de Linux de permitir que los usuarios sean libres de personalizar los programas que usan?

    No es culpa de GNU/Linux que la mayoría de programadores sean wintendistas y mucho menos que la gente no sepa usarlo. GNU/Linux no es Windows, por consiguiente “tiene” que ser diferente; el ser humano es costumbrista y los cambios le asustan así que es lógico que diga que GNU/Linux es mao o tiene miedo de cambiar a Windows.

    Las modificaciones se pueden hacer siempre y cuando el sistema sea tuyo o tengas potestad de manejarlo como se te antoje. De hecho con Windows tampoco puedes hacer modificaciones. Ahora, si al caso vamos el problema radica en que la mayoría de los asesores de seguridad (se les puede llamar así?) de las empresas instalan Windows y dejan a los usuarios con una sesión que tiene privilegios administrativos, ello permite que el usuario haga ciertos cambios al sistema e instale programas (como barritas de MyWebSearch, MegaUpload, Google Toolbar, Juegos, Live MSN) y crea que Windows es así siempre, cosa totalmente falsa porque Windows incluye sistema de permisos y en teoría, un asesor de seguridad debería dejar usar a cada usuario solo sesiones limitadas (que no pueden instalar ni modificar nada como en linux ;) ). GNU/Linux no viene con cuentas administrativas por defecto, solo tiene 1 que es el root y solo alguien con contraseña de Root puede acceder a él. Así que el error no es del sistema, va de parte del administrador de los sistemas.

    No se rompen libertades al tener esta restricción ya que va de parte de la empresa.

    Ahora que el Estado está por culminar la migración a Linux sería buena idea discutir si el venezolano comprende el concepto de software libre. En un país inundado por la piratería, en donde sólo algunas empresas y usuarios particulares pagan por usar los programas, la diatriba de cancelar o no por usar un software seguramente no le quita el sueño a los usuarios de computadoras, porque siempre existirá la opción de pagar BsF. 5 por un programa que en el resto del mundo cuesta más de 300 dólares. Venezuela -gracias a los escasos controles sobre la venta ilegal de programas- vive desde hace años en el mundo del software “casi” libre.

    Aquí hay un detalle bastante grande, cuando hablamos de piratería a nivel personal es muy distinto que a nivel empresarial que también es distinto a nivel gubernamental. Probablemente a mi casa no va a llegar M$ a decirme que mi Windows es pirata pero a nivel gubernamental esa posibilidad aumenta muchisimo lo cual no le conviene para nada. M$ está en la potestad de arrebatar el computador de la empresa con todo y sus datos sin necesidad de devolverlos solo si se demuestra que el sistema o software instalado es pirata ¿A alguien le gustaría eso?. A la gente de manera personal no se le obliga a usar software libre en casa, pero en el trabajo probablemente si.

    Imaginen que en un ministerio hayan 10 computadores, cada computador debe incluir su sistema operativo y que sea Windows, digamos que cuesta 300 dolares, serían 3000 dolares en total. También debe tener su paquete de ofirmática, sigamos que son 400 dolares, en total son 4000 dolares; debe tener su antivirus que sale en 30 dolares y son 300 dolares.

    Tenemos que 3000+4000+300= 7300 dolares! por 10 computadores. En bolívares sería apróximadamente 14 millones de bolívares o 14.000 bolívares Fuertes solo por tener todo legal.

    No quisiera decirlo pero las licencias de Windows Server son más caras, rondan entre los 5000 dolares, así que no contaré a los servidores.

    GNU/Linux es gratis, auqnue no así el soporte pero seguramente terminaría siendo más barato el soporte que comprar una licencia de Windows.

    Los que gustan imponer Linux para tratar de ganar la batalla ideológica en contra del imperio deben entender que esta es una decisión muy personal y estar conscientes de que todo lo que se masifica acaba por perder su esencia original. ¿Será Linux la multinacional que deberemos combatir en algunos años?

    Según yo lo veo no se trata de una lucha contra un imperio, se trata de algo que mejorará las cosas. GNU/Linux ofrece todo lo que no ofrece Windows como rendimiento, estabilidad, seguridad y durabilidad; si se hacen las cosas bien a su vez podremos obtener soporte (no creerás que con licencias piratas obtendrás soporte de M$ o si? ¬¬). Venezuela aún está en pañales para implementar de un golpe software libre, aún hay mucho por arreglar, programas por sustituir, cosas por estandarizar pero poco a poco se puede ir haciendo, no es algo malo, solo es algo diferente.

    Salu2

    Evitando Spam en páginas web.

    Mayo 10, 2008 por Signum · Sin comentarios
    Publicado en: Seguridad Web 

    Buscándo algunas cosas acerca del referer me conseguí por mera casualidad con 2 procedimientos bastante chéveres para evitar Spam en páginas web.

    A pesar de que siempre es recomendable tener varios sistemas para evitar Spam por si alguno falla estará el otro o el siguiente que tengas agregaré a mi lista los siguientes 2 métodos:

    Método 1: Evitando Spam mediante una regla en el .htaccess usando mod_rewrite o mod_security:

    La regla es bastante sencilla, si tenemos habilitado mod_security colocamos en el .htaccess una línea similar a la siguiente:

    SecFilterSelective "HTTP_REFERER" "(holdem|poker|casino)"

    Si tenemos habilitado mod_rewrite basta con colocar algo así:

    RewriteEngine   on
      RewriteCond %{HTTP_REFERER} poker  [NC,OR]
      RewriteCond %{HTTP_REFERER} holdem [NC,OR]
      RewriteCond %{HTTP_REFERER} casino [NC]
      RewriteRule .* - [F,L]

    O una regla así:

    RewriteEngine   on
    
    RewriteCond %{HTTP_REFERER} (poker|holdem|casino)  [NC]
    RewriteRule .* - [F,L]

    Las reglas lo que hacen es bloquear el acceso a las personas que vengan desde un referer que contenga las palabras “poker, holdem, casino” el cual normalmente son bots spamers. En ambos casos parece que obtendrán un [F] o Forbidden (Acceso denegado) hacia la página.

    Enlace de referencia: http://www.debian-administration.org/articles/232

    Método 2: Para los que no posean apache como servidor web pueden hacerlo a través de PHP:

    Primero deben descargar el siguiente archivo que contiene un código para evitar al igual que el proceso anterior, algunos referers de bots nets:

    Descarga de archivo: proteccion

    Una vez que descarguen el archivo y lo suban a su servidor, en la cabecera de su archivo php principal colocarán el siguiente texto:

    include ('proteccion.php');

    Visto en | Emezeta.com

    Al igual que el método 1 este también se basa en el Referer del visitánte y en este caso bloquea muchos más referers que normalmente usan los bots spamers.

    Como dije arriba es importánte tener muchas más protecciones como sistemas Captcha o sistemas de preguntas lógicas para evitar bots spamers.

    Salu2

    Un buen .htaccess para aumentar la seguridad en tu web.

    Mayo 10, 2008 por Signum · Sin comentarios
    Publicado en: Seguridad Web 

    En alguna oportunidad he mencionado la importancia de un archivo .htaccess con buenas reglas para una mayor seguridad en tu web y en este caso he visto una buena recopilación de reglas creadas por lo que yo llamaría un experto de seguridad web. En principio el archivo .htaccess utilizado por Apache no fue hecho para agregar seguridad a una página web, pero debido a su manejabilidad permite en muchos casos evitar accesos no auorizados. Las reglas son las siguientes:

    RewriteEngine On
    Options +FollowSymLinks
    
    RewriteCond %{REQUEST_METHOD}  ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]
    RewriteCond %{THE_REQUEST}     ^.*(\\r|\\n|%0A|%0D).* [NC,OR]
    
    RewriteCond %{HTTP_REFERER}    ^(.*)(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
    RewriteCond %{HTTP_COOKIE}     ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
    RewriteCond %{REQUEST_URI}     ^/(,|;|:|<|>|">|"<|/|\\\.\.\\).{0,9999}.* [NC,OR]
    
    RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
    RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^.*(libwww|curl|wget|python|nikto|scan).* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
    
    RewriteCond %{QUERY_STRING}    ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC,OR]
    RewriteCond %{QUERY_STRING}    ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
    
    RewriteCond %{QUERY_STRING}    ^.*\.[A-Za-z0-9].* [NC,OR]
    RewriteCond %{QUERY_STRING}    ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]
    
    RewriteRule ^(.*)$ access_log.php 

    El autor explica cada zona de las reglas en su tema así que yo también lo haré en base a lo que él explicó. El texto originalmente está en ingles y no pretendo hacer una traducción perfecta pero trataré de explicarlo a mi manera:

    Primero colocamos la configuración básica para habilitar el mod_rewrite en apache:

    RewriteEngine On
    Options +FollowSymLinks

    La siguiente regla deshabilita el banner de información de apache cuando envía un error como Not Found. Esta función es importante deshabilitarla ya que en algunas versiones de Apache o un apache mal configurado muestra información que podría ser de utilidad para un atacante como muestra la siguiente imagen:

    Mostrar la versión de apache y los módulos instalados 8con sus respectivas versiones) podría ser un riesgo de seguridad enorme ya que un atacante podría buscar bugs conocidos para dicha versión (para mi caso habilitar esta función me envió un Internal Server Error así que no es soportada por mi servidor):

    ServerSignature Off

    Las reglas utilizan 2 flags distintas:

    NC - No Case: No distingue mayúsculas o minúsculas
    OR - Sip, O: Siguiente condición.

    La primera regla está basada en el REQUEST_METHOD. El REQUEST_METHOD es la forma en que se conecta el cliente con nuestro servidor. Para mi caso solo necesito GET o POST, puede que para su caso sea distinto ;).

    RewriteCond %{REQUEST_METHOD}  ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]

    THE_REQUEST es la petición completa hecha por el usuario y consiste en una cadena larga. Esta es usada para sanar ya que no queremos que un usuario envíe una petición con doble línea lo cual podría permitir un CRLF Injection ;)

    RewriteCond %{THE_REQUEST}     ^.*(\\r|\\n|%0A|%0D).* [NC,OR]

    HTTP_REFERER puede contener caracteres que pueden ser usados para hacer una Pentest (Test de Intrusión) a una aplicación web. También podría permitir una intrusión de archivos así que bloqueamos los caracteres que no serán usados en peticiones legítimas:

    RewriteCond %{HTTP_REFERER}    ^(.*)(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]

    HTTP_COOKIE es igual de importante y ofrece un lugar para guardar el pentest caracteres lo que quiere decir que guarda en una cookie los caracteres.

    RewriteCond %{HTTP_COOKIE}     ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]

    REQUEST_URI Es importante para la protección del servidor. Sobre todo para proteger de problemas con OverFlows como sucede com Apache Tomcat. Para proteger de esto limitaremos a 9999 caracteres duplicados.

    RewriteCond %{REQUEST_URI}     ^/(,|;|:|<|>|">|"<|/|\\\.\.\\).{0,9999}.* [NC,OR]

    USER_AGENT Analiza el User Agent (navegador) desde donde se hace la petición. El bloquear algunos user puede evitar que accedan a nuestra web muchos bots atacantes (muy común los libwww) o también hacer peticiones desde WGET (gestor de descargas). Particularmente usaba una regla similar y desde que la implementé dejé de ver ataques de bots insertados en servidores vulnerados.

    RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
    RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^.*(libwww|curl|wget|python|nikto|scan).* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]

    QUERY_STRING es probablemente lo más importante de todo porque aquí es donde suceden la mayoría de las cosas. Configurando de buena forma las reglas podemos evitar algunos XSS, algunos SQL Injection, y Remote Shell Injection.

    RewriteCond %{QUERY_STRING}    ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC,OR]
    RewriteCond %{QUERY_STRING}    ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
    RewriteCond %{QUERY_STRING}    ^.*\.[A-Za-z0-9].* [NC,OR]
    RewriteCond %{QUERY_STRING}    ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]
    

    Finalmente si apache consiguiera alguna de las peticiones bloqueadas en la regla podemos redirigir al usuario a una página o directamente bloquear el acceso. Originalmente la regla está hecha para enviar al posible atacante a una página alojada en el servidor llamada access_log.php el cual podría contener un script o podría ser una página hecha por usted:

    RewriteRule ^(.*)$ access_log.php

    Para mi caso particular prefiero enviar un mensaje de acceso denegado con la siguiente regla:

    RewriteRule ^(.*)$ - [F]

    Eso enviará al posible atacante a una página de error 403 Forbidden o acceso denegado.

    Las reglas me parecieron bastante chéveres a pesar de que yo ya usaba la mayoría había una que otra que no conocía y decidí agregar. Siempre es bueno que a su vez hagan una búsqueda más extensa de más reglas para bloquear accesos y a su vez aprendan a utilizar cada regla según su conveniencia.

    Visto en | The Hacker Webzine

    Algunos enlaces de referencia:

  • Apache Mod_Rewrite
  • QUERY_STRING
  • Documentación de apache
  • XSS
  • Salu2