Mail Spoofing, alguien está enviando e-mails desde mi dirección de correo electrónico

e mail2  Mail Spoofing, alguien está enviando e mails desde mi dirección de correo electrónicoEl Mail Spoofing es una técnica de suplantación de identidad mediante el uso de correo electrónico ajeno, es decir, cuando alguien envía e-mails desde la dirección de correo de otra persona. Normalmente se utiliza para enviar SPAM enmascarando al verdadero remitente. A través de un servidor SMTP se pueden enviar correos en nombre de otros modificando las cabeceras o headers de los campos to, from y reply-to, de forma que para los destinatarios parece que has sido tú quien les has enviado el e-mail. Si has recibido un correo de algún conocido y desconfías de que realmente haya sido él, según nos indica Google, tienes que comprobar en las headers del e-mail que la dirección del reply-to y la del from deberían coincidir. Además, el message-id también debería coincidir con el dominio de la dirección de from.

Este post lo he publicado porque hoy acabo de recibir mi primer ataque de Mail Spoofing. A primera hora de la mañana he recibido un correo como si me lo hubiera enviado yo mismo (por suerte los filtros de Gmail lo han detectado como spoofing y lo han alojado en la bandeja de SPAM), en el que cierto individuo me ha invitado a revisar con él el correo de SPAM que iba a enviar en mi nombre.

Hey pinche gilipollas, gracias por prestarme tu email ***** @ ****.*** para mandar spam de mi pagina, dicen que eso es correo no deseado, pero como yo le pongo los links donde pueden denunciar la pagina y se pueden dar de baja, eso no es spam, ya que en todo momento pongo que se pueden dar de baja de nuestra lista, si no tubiera tu email por el cual puedo mandar la publicidad de mi pagina, no podrian conocerla, gracias, te mando una copia de la publicidad que estoy mandando con tu email para que me digas si te parece que esta bien, asi ninguno de los 2 tenemos problemas:

Tras unas horas he recibido otro correo mío, pero esta vez sólo con el mensaje que me habían invitado a revisar. Inmediatamente he buscado en Google a ver si a alguien más le había ocurrido lo mismo y voilà, tras buscar por el asunto del email que había recibido (Pinche gilipollas, gracias por prestarme tu email para mandar SPAM), he visto que hay dos posts abiertos en los foros de Google Blogger (la página que promociona el tio éste es un blog de Blogger).

La solución es bastante complicada. Por mi parte he notificado a Google a través de la herramienta de denuncia de un uso inapropiado de Gmail el caso, me he puesto en contacto con la La Unidad de Investigación de Delincuencia en Tecnologías de la Información de la Policía Nacional española y he aportado mis datos en los posts del foro de blogger por si se saca alguna conclusión o denuncia conjunta.

En algunas ocasiones lo que ocurre no es spoofing a través de un servidor SMTP, si no que alguien ha accedido a tu cuenta de correo y desde ahí envía e-mails directamente. Para ello lo mejor que puedes hacer es cambiar la contraseña y la pregunta secreta, analizar tu ordenador en busca de malware o spyware y utilizar la herramienta de Gmail para ver las últimas IPs desde donde se ha accedido a tu cuenta de correo electrónico (puedes encontrarla en el pie de tu bandeja de entrada como Last account activity).

Más info | Consejos para evitar la suplantación de identidad o spoofing

2 Comentarios

Efecto del Social Media Marketing, o como se propaga nuestro contenido a través de las redes sociales

social media marketing flow Efecto del Social Media Marketing, o como se propaga nuestro contenido a través de las redes sociales

Interesante diagrama de Social Reflexion que representa cuál debería ser el flujo de propagación ideal de nuestro contenido con una buena estrategia de social media marketing. Aprovechando el uso de redes sociales como Facebook y Twitter, de marcadores como DIGG o Stumbleupon y la inestimable ayuda de bloggeros, grandes y pequeños, nuestro contenido puede llegar a decenas, cientos o miles de usuarios, ¿el truco? crear contenido atractivo y valioso, y saber hacerlo llegar a los demás. Desarrollando la idea en el panorama español, podemos destacar algunas redes sociales clave para lograr el éxito, como Menéame ó Bitácoras. Aquí os dejo un fragmento del diagrama en cuestión, si queré verlo completo, pulsad sobre la imagen:

Más info | Social Reflexion

1 Comentario

Diferencias entre una Vista y una Vista Materializada en Oracle

Una Vista es un objeto de Oracle que al consultarlo ejecuta por detrás una query y nos devuelve el resultado (donde la query puede acceder a tablas, otras vistas, utilizar funciones o procedimientos, etc.). Cada vez que accedemos a la vista, la query se ejecuta y nos devuelve la información que en ese momento exista en el origen.

Por contra, una Vista Materializada (Materialized Views) es otro tipo de objeto de Oracle que aunque técnicamente es lo mismo que una Vista (ejecuta una consulta sql), lo que hace es almacenar físicamente en caché el resultado de ejecutar una query en un determinado momento, de forma que cada vez que consultemos la Vista Materializada lo que vamos a recuperar es lo que había en el origen en el momento en el que se creó o se refrescó la VM.

vista materializada oracle Diferencias entre una Vista y una Vista Materializada en Oracle

La sintaxis para crear una Vista materializada es:

CREATE MATERIALIZED VIEW nueva_vista_materializada
[TABLESPACE nuestro_tablespace]
[BUILD {IMMEDIATE | DEFERRED}]
[REFRESH {ON COMMIT | ON DEMAND | [START WITH fecha_inicial] NEXT intervalo_tiempo } |
{COMPLETE | FAST | FORCE | NEVER} ]
[{ENABLE|DISABLE} QUERY REWRITE]
AS SELECT tabla1.campo_a, tabla2.campo_b
FROM tabla1 , tabla2
WHERE tabla1.campo_a = tabla2.campo_a
AND …

Donde podemos especificar de qué forma queremos que se recuperen los datos: de forma inmediata o en otro momento:

  • BUILD IMMEDIATE: El resultado se almacena al ejecutar la query
  • BUILD DEFERRED: Sólo se crea la definición, el resultado se almacenará más adelante. Para ello podemos utilizar cuando queramos llenarla la función REFRESH del paquete de Oracle DBMS_MVIEW.

También podemos especificar cada cuánto tiempo o cuándo queremos que se actualicen los datos de la vista:

  • REFRESH ON COMMIT: los datos se actualizan cada vez que se haga COMMIT sobre los objetos fuente.
  • REFRESH ON DEMAND: sólo se actualizarán cuando se haga manualmente a través de las funciones REFRESH de Oracle (más adelante se explica cuáles son y cómo invocarlas).
  • REFRESH [START WITH fecha_inicial] NEXT intervalo_tiempo: con esta sentencia podemos establecer una actualización periódica de la vista. La fecha_inicial puede definirse como sysdate y el intervalo_tiempo cada cuanto tiempo queremos realizar la tarea (podemos incrementar numéricamente el sysdate)

Y especificar si permitimos a Oracle o no reescribir las queries cuando en una consulta se intente acceder a las tablas origen, de forma que por detrás el duende de Oracle ataque directamente a las vistas materializadas, cuyo acceso y recuperación de datos es más rápido, sin que el usuario necesite hacer nada. Esto sólo lo hará el Optimizador de Oracle si la consulta lo permite (que las tablas a las que va a buscar la información coinciden con las tablas origen de la vista materializada).

  • ENABLE QUERY REWRITE: Oracle puede reescribir las queries
  • DISABLE QUERY REWRITE: lo contrario

La ventaja de este tipo de objeto la encontramos cuando la query asociada es muy compleja, tiene numerosos joins y se utiliza con frecuencia, ya que nos permite mejorar el rendimiento de la SQL al tenerla almacenada en memoria y ejecutarse una sóla vez. Sin embargo, el principal hándicap es que nos vemos obligados a mantenerla actualizada de forma regular para no perder calidad en los datos. Para ello podemos definir en el script de creación de la Vista Materializada el tipo de actualización que tendrá al ejecutar los métodos propios de Oracle para refrescarla. Existen los siguientes tipos de actualización para una Vista materializada

  • FAST: Es la opción más recomendada por su rendimiento. Es una actualización incremental, es decir, sólo actualiza los registros que hayan cambiado. Para que esta opción funcione correctamente necesitamos generar estadísticas de la vista para que Oracle esté al tanto de los cambios. La forma de hacerlo es creando un log de la vista materializada sobre la PK de cada tabla origen.

    CREATE MATERIALIZED VIEW LOG ON tabla_origen
    WITH PRIMARY KEY
    INCLUDING NEW VALUES;

  • COMPLETE: regenera por completo el resultado al borrar y volver a ejecutar de nuevo la query.
  • FORCE: Es el valor por defecto. En caso de que se pueda, se ejecutará el FAST; si no, el COMPLETE.
  • NEVER: nunca se refresca la vista.

Si modificamos el origen y queremos que éste se refleje en la Vista materializada, tenemos que invocar a una función del paquete DBMS_MVIEW de Oracle que se encarga de actualizar los datos. Tenemos dos a nuestra disposición:

  • DBMS_MVIEW.REFRESH: con este método pasamos por parámetro la Vista Materializada para que se actualice:

    begin

    DBMS_MVIEW.REFRESH(‘TABLA_EMPLEADOS’);

    end;

  • DBMS_MVIEW.REFRESH_DEPENDENT: mientras que con este lo que le pasamos por parámetro son todas las tablas origen de las que depende la vista:

    begin

    DBMS_MVIEW.REFRESH_DEPENDENT(‘TABLA_ORIGEN_1′,’TABLA_ORIGEN_2′,’TABLA_ORIGEN_3′);

    end;

2 Comentarios

Vistas de metadatos de Oracle, cómo bucear por los objetos de la base de datos


oracle vistas metadatos Vistas de metadatos de Oracle, cómo bucear por los objetos de la base de datos

En alguna ocasión hemos tenido que hacer una consulta en Oracle sobre una tabla cuyo nombre no recordamos con exactitud y nos hemos tenido que pegar con la documentación del proyecto (si existe, claro) hasta encontrarla. Con el IDE TOAD for Oracle podemos usar el Schema Browser para encontrar rápidamente a través de los filtros de metadatos la tabla en cuestión, sin embargo, si estamos con cualquier otra herramienta que no disponga de un buscador para el diccionario de datos de  la base de datos, la única forma de buscar entre todos los objetos del sistema es utilizando alguna de las vistas de metadatos propias de ORACLE del esquema SYSTEM (SYS), que almacenan toda la información sobre los objetos de la BBDD.

Existe una vista por cada nivel de acceso en función del usuario con el que nos hemos conectado, por ejemplo, las vistas que agrupan toda la información sobre los índices serían DBA_INDEXES, ALL_INDEXES y USER_INDEXES.

  • DBA_: contiene todos los objetos de la instancia a la que nos hemos conectado. Es necesario tener los privilegios suficientes.
  • ALL_: contiene todos los objetos accesibles por el usuario con el que nos hemos conectado, tanto los propios como sobre los que se tiene acceso (ya sean de otros usuarios o esquemas)
  • USER_: sólo contiene los objetos que pertenecen al usuario.

Estas vistas de metadatos nos permiten buscar rápidamente cualquier objeto de la base de datos.

  • SYS.DBA_TABLES ó SYS.DBA_ALL_TABLES (Tablas)
  • SYS.DBA_VIEWS (Vistas)
  • SYS.DBA_INDEXES (Índices)
  • SYS.DBA_TABLESPACES (Tablespaces)
  • SYS.DBA_USERS (Usuarios)
  • SYS.DBA_PROCEDURES (Procedures)
  • SYS.DBA_SEQUENCES (Secuencias)
  • SYS.DBA_TRIGGERS (Triggers o Disparadores)

Una consulta de ejemplo con la que obtendríamos el nombre completo de una tabla sería:

SELECT OWNER, TABLE_NAME, TABLESPACE_NAME
FROM SYS.DBA_TABLES
WHERE TABLE_NAME LIKE ‘%EMPLEADOS%’;

En relación a las tablas DBA_TABLES y DBA_ALL_TABLES, mencionar que la diferencia radica en que la primera sólo contiene información de las tablas, mientras que la segunda incluye también metadatos de los Object Tables, que en Oracle son tipos de datos definidos por el propio usuario (son estructuras o arrays que pueden incorporarse como columnas de una tabla o incluso permiten crear nuevas tablas instanciando estos objetos; para crearlos se utiliza la sentencia CREATE TYPE < nombre > AS OBJECT).

SYS.ALL_TAB_COLS: buscar tablas por sus columnas en Oracle

Otra tabla del system que nos puede ayudar a la hora de buscar información en los metadatos de Oracle es  SYS.DBA_TAB_COLS. Esta tabla contiene las columnas de cada objeto table de nuestra base de datos, de forma que buscando por el campo COLUMN_NAME podremos saber en qué tablas se encuentra (útil cuando sabemos el campo de destino y queremos saber saber de donde viene o por donde pasa).

Por ejemplo, para obtener todas las tablas del sistema que incluyen una columna en concreto podríamos utilizar esta query:

SELECT OWNER, TABLE_NAME, COLUMN_NAME
FROM SYS.ALL_TAB_COLS
WHERE COLUMN_NAME = ‘FECHA_ALTA’;

SYS.DBA_TAB_PRIVS: Ver los permisos o privilegios de una tabla en Oracle

La forma más rápida de ver los permisos de una o varias tablas es utilizando la vista SYS.DBA_TAB_PRIVS. Filtrando por el nombre de la tabla recuperaremos una tupla con cada permiso otorgado (select, alter, insert, update, delete, execute, etc.), el rol al que se le ha asignado y el usuario propietario. Aunque la nomenclatura de la vista incluye _TAB, se pueden consultar los permisos de cualquier objeto de la BBDD: tablas, vistas, secuencias, etc.

SELECT GRANTEE, OWNER, TABLE_NAME, GRANTOR, PRIVILEGE
FROM SYS.DBA_TAB_PRIVS
WHERE TABLE_NAME LIKE ‘%EMPLEADOS%’

Sin Comentarios

Curso de Community Manager gratis para trabajadores en activo On-line

curso gratis online community manager Curso de Community Manager gratis para trabajadores en activo On line

Desde hace un tiempo el término Community Manager forma parte de nuestro vocabulario y cada vez se está dibujando con mayor claridad el perfil laboral que debe desempeñar un recurso con esta denominación. Como todo lo nuevo o poco conocido, normalmente el acceso es muy complicado y acceder a formación especializada podría resultar complicado y sobre todo, caro. Sin embargo, desde hace unos días he visto que varias academias de formación e-learning han comenzado a promocionar cursos de Formación Continua de Community Manager gratuitos para trabajadores en activo, ya que están subvencionados por la Fundación Tripartita de la EU o bien forman parte de la bolsa de cursos de Formación Continua (antiguo FORCEM).

Por un lado, tenemos el curso de 50 horas La figura del Community Manager como dinamizador, impartido por Directivo Global, que sólo pide como requisito ser un trabajador en activo y estar cotizando en la Seguridad Social. El curso se divide en cinco temas, donde podemos conocer la base del concepto de Community Manager: las redes sociales; cómo gestionar comunidades de foros o blogs; asistencia a los usuarios y audiencia de nuestros proyectos; herramientas principales de un CM y estrategias en Social Media.

Por otro lado, el curso que imparte Formación Continua, denominado Técnico Superior en Marketing Digital, Redes Sociales y Web 2.0 es muchísimo más completo, ya que cuenta con 300 horas lectivas. El único pero es que se basa en los créditos de Formación continua (FORCEM), es decir, la empresa del trabajador tiene una bolsa de dinero subvencionada por la UE para invertir en la formación de sus trabajadores, y lo que suele ocurrir en la mayoría de las empresas es que si cuentan con una carrera profesional y un plan de formación, ya han decido donde invertir ese dinero, por lo que es muy probable que no estén dispuestos a pagar el curso al empleado. También  pudiera ser que dieran la opción de elegir entre el plan de formación corporativo o (“o” exclusivo) el curso que quiera hacer el empleado. Este curso tiene una base mucho más completa de marketing, dedicando los varios temas al marketing comercial y en redes sociales, a los consumidores, medios o plataformas donde ejercer las tareas de un Social Media, herramientas o productos multimedia que ofrecer (video, audio, podcasts). Desde mi punto de vista, el más recomendable y completo.

Hay otras academias donde se imparte el curso de Community Manager con un temario similar, pero de caracter presencial o semi-presencial, tanto para trabajadores en activo como para desempleados. En FORMAN, academia malagueña, ofrecen el curso semi-presencial de 50 horas Gestor de Comunidad: Community Manager. Para acceder al curso subvencionado hay que superar una prueba técnica y la aprovación del perfil por un tribunal de la academia (es necesario enviar el CV).

Más info | La figura del Community Manager como dinamizador
Más info | Técnico Superior en Marketing Digital, Redes Sociales y Web 2.0
Más info | Gestor de Comunidad: Community Manager

6 Comentarios

Mejora la usabilidad y accesibilidad de los formularios en HTML 4.0

Acabo de descubrir varias etiquetas para formularios HTML 4.0 que no conocía y que nos permiten  mejorar la usabilidad y la accesibilidad de nuestros formularios considerablemente. Desde Eslomas nos ofrecen una  explicación de éstas y varios ejemplos donde comprobar el resultado. Tal y como nos indican, estas  etiquetas están admitidas por la W3C, por lo que no tendremos ningún problema al validar nuestro formulario.

Fieldset y Legend

Estas etiquetas nos permiten crear un área visible dentro del formulario agrupando varios controles que estén relacionados facilitando al usuario su comprensión y usabilidad, ya que permite desplazarse de un control a otro a través de la tecla TAB. La etiqueta Fieldset crea el recuadro que agrupa a los controles, mientras que Legend nos permite implementar el título del área.

<fieldset>

<legend>Datos personales:</legend>

Nombre: <input size=”20″ type=”text” />

Dirección: <input size=”20″ type=”text” />

Teléfono: <input size=”20″ type=”text” />

</fieldset>

Datos personales:

Nombre:

Dirección: 

Teléfono: 

Label

Aunque no es una etiqueta desconocida, puede que el uso que se la da no sea el apropiado o simplemente que no es explota todo su potencial. Esta etiqueta permite definir un título a un control del formulario. Cada etiqueta label sólo puede estar asignada a un control, y digo asignada porque aquí es donde está el verdadero uso de esta etiqueta. Mediante el atributo for (propio de la etiqueta label) podemos especificar el id del control de formulario al que queremos asignar el label, de esta forma el usuario podrá hacer click sobre el control o sobre el label al realizar las operaciones con el formulario. Donde realmente podemos ver su efecto es en controles radiobutton ó checkbox, ya que para seleccionarlos o chequearlos podremos hacer click sobre el label o sobre los propios controles. De esta forma se mejora considerablemente la usabilidad del formulario. Cabe mencionar que dentro de la etiqueta label podemos incluir tanto texto como imágenes.

Selecciona tu vehículo

<input id=”bmw” name=”coche” type=”radio” />

<label for=”bmw”>BMW

<input id=”audi” name=”coche” type=”radio” />

<label for=”audi”><img src=”"/> Audi

Selecciona tu vehículo:

Optgroup

Esta etiqueta nos permite crear grupos dentro de desplegables select. Los grupos están definidos por un título que aparecerá en negrita y cursiva, y que no será seleccionable.

La utilidad de optgroup reside en facilitar al usuario la lectura y comprensión de la lista desplegable.

<select name=”Modelo”>

<option selected=”selected” value=”none”>Seleccione…</option>

<optgroup label=”BMW”>

<option value=”bmw120d”>BMW 116d

<option value=”bmw118d”>BMW 118d

<option value=”bmw120d”>BMW 120d

<option value=”bmw318d”>BMW 318d

<option value=”bmw320d”>BMW 320d

</optgroup>

<optgroup label=”AUDI”>

<option value=”A1″>A1

<option value=”A2″>A2

<option value=”A3″>A3

<option value=”A4″>A5

</optgroup>

</select>

Selecciona el modelo:

Más info | http://www.eslomas.com/campos-fieldset-legend-label-optgroup

1 Comentario