imprimir una tabla con echo o printf - Pregunta desde youtube

lunes, 11 de julio de 2011

 Claro que si.. lo que se debe hacer es simple... puedes usar Jquery JSON para esto o mostrar las tablas de manera facil en el array creado dentro del while (6:43) k recibe los datos de la consulta asi:
$productos[]= array( 'id' =>$row['Nidentificacion'], 'nombre'=>$row['Nombre'], 'precio'=>$row['salario'], 'bonificacion' =>$row['bonificacion'] );

despues colocas este codigo para poder visualizar la tabla creada imprimiendo el array $productos[];

echo("<table width='200' border='1'>
  <tr>

    <td>ID</td>

    <td>Nombre</td>

    <td>Precio</td>

    <td>bonificacion</td>

  </tr>");





   for($i=0;$i<$cantidad;$i++){  ?>



  <? echo"<tr>

    <td>".$productos[$i]['id']."</td>

    <td>".$productos[$i]['nombre']."</td>

    <td>".$productos[$i]['precio']."</td>

    <td>".$productos[$i]['bonificacion']."</td>

  </tr>";



  }

  echo"</table>";


Espero haberte ayudado @gigantov

Presentación de la informacion Financiera bajo IFRS en el Mercado Integrado Latinoamericano MILA es una realidad

viernes, 27 de mayo de 2011

El anuncio de entrada de operación del MILA (Mercado integrado latinoamericano ) indica la apertura de mecanimos de control, de presentación de información financiera tal como esta establecido en la ley 1314 de 2009.



Algunas empresas han presentado sus estados Financieros de acuerdo a los estandares internacionales de Contabilidad como lo son Pacific Rubiales Energy,  que presento en sus resultados  "perdida por ingresos no percibidos en contratos de riesgo commodities" dado a que se realizaron contratos al futuro de venta en determinadas fechas en los commodities petroleo WTI  por debajo del precio del mercado debido al valor razonable, muy seguramente si estos estados se hubieren presentado bajo COLGAAP el resultado hubiere sido significativo debido a que en el estado de resultados esa perdida en contratos de gerencia de riesgo no se hubiere causado debido al valor historico actualmente presente en nuestro margen contable colombiano.


Podremos encontrar gran variedad de instrumentos financieros en el que se ofrece una mayor ampliación de la canasta en el Mila, asi como la necesidad de presentación  por parte de empresas de el uso de  estandares internacionales de contabilidad  (IFRS) es una realidad.

La superintendencia financiera de colombia ademas de otorgar licencias a las empresas que cotizan en bolsa, necesita  tener una mayor capacidad de regulacion que otorgue el aseguramiento de la información financiera, eficaz y confiable de todas las empresas que seran participes en el MILA para que todos aquellos inversionistas y demas usuarios tomen las mejores decisiones.



por Juan Carlos Vargas.

Anexos:
http://www.superfinanciera.gov.co/web_valores/?LO=00000001a6b7c8d900000003000000050006da874c00e8b2000000000001ffff00000000000000000000000000000000000000000000000000000000000000000000000000000000&type=application/pdf

Trabajo de aseguramiento de la información financiera en XBRL

martes, 26 de abril de 2011

El desarrollo del lenguaje XBRL implica varios aspectos como es el aseguramiento de la información divulgada por las empresas de diferentes sectores, para ello los principios de partida doble y las formulas son necesarias para que todos los conceptos en XBRL sean hechos de manera adecuada y teniendo principios de ecuaciones:

A continuación presento un ejemplo de aseguramiento de información basico mediante formula en XBRL que simula la ecuación fundamental del patrimonio muchas veces llamada la ecuación contable:

ACTIVO = PASIVO + PATRIMONIO.



como resultado de esta se indican tres elementos que estan expresos en el desarrollo de la taxonomia:

sample.xsd

<xsd:schema elementformdefault="qualified" targetnamespace="http://www.fujitsu.com/xbrl/taxeditor/sample" xmlns:bf="http://xbrl.org/2008/filter/boolean" xmlns:ca="http://xbrl.org/2008/assertion/consistency" xmlns:cf="http://xbrl.org/2008/filter/concept" xmlns:df="http://xbrl.org/2008/filter/dimension" xmlns:ea="http://xbrl.org/2008/assertion/existence" xmlns:ef="http://xbrl.org/2008/filter/entity" xmlns:formula="http://xbrl.org/2008/formula" xmlns:gen="http://xbrl.org/2008/generic" xmlns:gf="http://xbrl.org/2008/filter/general" xmlns:label="http://xbrl.org/2008/label" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:mf="http://xbrl.org/2008/filter/match" xmlns:pf="http://xbrl.org/2008/filter/period" xmlns:reference="http://xbrl.org/2008/reference" xmlns:rf="http://xbrl.org/2008/filter/relative" xmlns:samples="http://www.fujitsu.com/xbrl/taxeditor/sample" xmlns:ssf="http://xbrl.org/2008/filter/segment-scenario" xmlns:tf="http://xbrl.org/2008/filter/tuple" xmlns:uf="http://xbrl.org/2008/filter/unit" xmlns:va="http://xbrl.org/2008/assertion/value" xmlns:validation="http://xbrl.org/2008/validation" xmlns:variable="http://xbrl.org/2008/variable" xmlns:vf="http://xbrl.org/2008/filter/value" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xl="http://www.xbrl.org/2003/XLink" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:annotation>

<xsd:appinfo>

<link:linkbaseref xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="sample-user.xml" xlink:type="simple">

</link:linkbaseref>

</xsd:appinfo>

<xsd:import namespace="http://www.xbrl.org/2003/instance" schemalocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd">

<xsd:import namespace="http://xbrl.org/2008/formula" schemalocation="http://www.xbrl.org/2008/formula.xsd">

<xsd:import namespace="http://xbrl.org/2008/label" schemalocation="http://www.xbrl.org/2008/generic-label.xsd">

<xsd:import namespace="http://xbrl.org/2008/reference" schemalocation="http://www.xbrl.org/2008/generic-reference.xsd">

<xsd:import namespace="http://xbrl.org/2008/filter/boolean" schemalocation="http://www.xbrl.org/2008/boolean-filter.xsd">

<xsd:import namespace="http://xbrl.org/2008/filter/concept" schemalocation="http://www.xbrl.org/2008/concept-filter.xsd">

<xsd:import namespace="http://xbrl.org/2008/filter/dimension" schemalocation="http://www.xbrl.org/2008/dimension-filter.xsd">

<xsd:import namespace="http://xbrl.org/2008/filter/entity" schemalocation="http://www.xbrl.org/2008/entity-filter.xsd">

<xsd:import namespace="http://xbrl.org/2008/filter/general" schemalocation="http://www.xbrl.org/2008/general-filter.xsd">

<xsd:import namespace="http://xbrl.org/2008/filter/match" schemalocation="http://www.xbrl.org/2008/match-filter.xsd">

<xsd:import namespace="http://xbrl.org/2008/filter/period" schemalocation="http://www.xbrl.org/2008/period-filter.xsd">

<xsd:import namespace="http://xbrl.org/2008/filter/relative" schemalocation="http://www.xbrl.org/2008/relative-filter.xsd">

<xsd:import namespace="http://xbrl.org/2008/filter/segment-scenario" schemalocation="http://www.xbrl.org/2008/segment-scenario-filter.xsd">

<xsd:import namespace="http://xbrl.org/2008/filter/tuple" schemalocation="http://www.xbrl.org/2008/tuple-filter.xsd">

<xsd:import namespace="http://xbrl.org/2008/filter/unit" schemalocation="http://www.xbrl.org/2008/unit-filter.xsd">

<xsd:import namespace="http://xbrl.org/2008/filter/value" schemalocation="http://www.xbrl.org/2008/value-filter.xsd">

<xsd:import namespace="http://xbrl.org/2008/validation" schemalocation="http://www.xbrl.org/2008/validation.xsd">

<xsd:import namespace="http://xbrl.org/2008/assertion/consistency" schemalocation="http://www.xbrl.org/2008/consistency-assertion.xsd">

<xsd:import namespace="http://xbrl.org/2008/assertion/existence" schemalocation="http://www.xbrl.org/2008/existence-assertion.xsd">

<xsd:import namespace="http://xbrl.org/2008/assertion/value" schemalocation="http://www.xbrl.org/2008/value-assertion.xsd">

<xsd:element id="sample_balance" name="balance" nillable="true" substitutiongroup="xbrli:item" type="xbrli:booleanItemType" xbrli:periodtype="instant">

<xsd:element id="samples_assets" name="assets" nillable="true" substitutiongroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodtype="instant">

<xsd:element id="samples_liabilities" name="liabilities" nillable="true" substitutiongroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodtype="instant">

<xsd:element id="samples_equity" name="equity" nillable="true" substitutiongroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodtype="instant">

</xsd:element></xsd:element></xsd:element></xsd:element></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:import></xsd:annotation></xsd:schema>




sample-user.xml





<link:linkbase xmlns:cf="http://xbrl.org/2008/filter/concept" xmlns:formula="http://xbrl.org/2008/formula" xmlns:gen="http://xbrl.org/2008/generic" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:p1="http://www.fujitsu.com/xbrl/taxeditor/test" xmlns:p2="http://www.fujitsu.com/xbrl/taxeditor/variable" xmlns:p3="http://www.fujitsu.com/xbrl/taxeditor/balance" xmlns:p4="http://www.fujitsu.com/xbrl/taxeditor/default" xmlns:samples="http://www.fujitsu.com/xbrl/taxeditor/sample" xmlns:test="http://www.fujitsu.com/xbrl/taxeditor/default2" xmlns:variable="http://xbrl.org/2008/variable" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">

<link:arcroleref arcroleuri="http://xbrl.org/arcrole/2008/variable-filter" xlink:href="http://www.xbrl.org/2008/variable.xsd#variable-filter" xlink:type="simple">

<link:arcroleref arcroleuri="http://xbrl.org/arcrole/2008/variable-set" xlink:href="http://www.xbrl.org/2008/variable.xsd#variable-set" xlink:type="simple">

<gen:link xlink:role="http://www.xbrl.org/2003/role/link" xlink:type="extended">

<formula:formula aspectmodel="dimensional" implicitfiltering="true" source="var:assets" value="$var:assets eq ($var:liabilities + $var:equity)" xlink:label="formula" xlink:title="formula" xlink:type="resource">

<formula:aspects>

<formula:concept>

<formula:qname>samples:balance</formula:qname>

</formula:concept>

</formula:aspects>

</formula:formula>

<variable:factvariable bindassequence="false" xlink:label="factVariable" xlink:title="factVariable" xlink:type="resource">

<variable:variablearc name="var:assets" order="1.0" xlink:arcrole="http://xbrl.org/arcrole/2008/variable-set" xlink:from="formula" xlink:title="unknown: formula to factVariable" xlink:to="factVariable" xlink:type="arc">

<cf:conceptname xlink:label="conceptName" xlink:title="conceptName" xlink:type="resource">

<cf:concept>

<cf:qname>test:liabilities</cf:qname>

</cf:concept>

</cf:conceptname>

<variable:variablefilterarc complement="false" cover="true" order="1.0" xlink:arcrole="http://xbrl.org/arcrole/2008/variable-filter" xlink:from="factVariable" xlink:title="unknown: factVariable to conceptName" xlink:to="conceptName" xlink:type="arc">

<variable:factvariable bindassequence="false" xlink:label="factVariable_2" xlink:title="factVariable" xlink:type="resource">

<variable:variablearc name="var:liabilities" order="2.0" xlink:arcrole="http://xbrl.org/arcrole/2008/variable-set" xlink:from="formula" xlink:title="unknown: formula to factVariable" xlink:to="factVariable_2" xlink:type="arc">

<cf:conceptname xlink:label="conceptName_2" xlink:title="conceptName" xlink:type="resource">

<cf:concept>

<cf:qname>test:liabilites</cf:qname>

</cf:concept>

</cf:conceptname>

<variable:variablefilterarc complement="false" cover="true" order="1.0" xlink:arcrole="http://xbrl.org/arcrole/2008/variable-filter" xlink:from="factVariable_2" xlink:title="unknown: factVariable to conceptName" xlink:to="conceptName_2" xlink:type="arc">

<variable:factvariable bindassequence="false" xlink:label="factVariable_3" xlink:title="factVariable" xlink:type="resource">

<variable:variablearc name="var:equity" order="3.0" xlink:arcrole="http://xbrl.org/arcrole/2008/variable-set" xlink:from="formula" xlink:title="unknown: formula to factVariable" xlink:to="factVariable_3" xlink:type="arc">

<cf:conceptname xlink:label="conceptName_3" xlink:title="conceptName" xlink:type="resource">

<cf:concept>

<cf:qname>test:equity</cf:qname>

</cf:concept>

</cf:conceptname>

<variable:variablefilterarc complement="false" cover="true" order="1.0" xlink:arcrole="http://xbrl.org/arcrole/2008/variable-filter" xlink:from="factVariable_3" xlink:title="unknown: factVariable to conceptName" xlink:to="conceptName_3" xlink:type="arc">

</variable:variablefilterarc></variable:variablearc></variable:factvariable></variable:variablefilterarc></variable:variablearc></variable:factvariable></variable:variablefilterarc></variable:variablearc></variable:factvariable></gen:link></link:arcroleref></link:arcroleref></link:linkbase>



como se puede ver se crean conceptos de formula utilizando xlink  se crean conceptos y test que hacen posible una validación pertinente de los saldos encontrados en las partidas del total de activos (assets ), pasivos ( liabilities) y patrimonio (equity ).


Un saludo muy cordial.


Juan Carlos Vargas

Determinacion de riesgos en Auditoria web.

martes, 8 de marzo de 2011

Alguna vez nos hemos envuelto en una serie inconvenientes en el proceso de auditoria web tratando de encontrar falencias en nuestras aplicaciones web? pues bien aqui tenemos una serie de procesos fundamentales que se deben tener en cuenta para la determinacion de riesgos en Auditoria web.


Obtención pasiva de información:

Descubrimiento de aplicaciones:



Detectar puertos abiertos e identificar servicios/aplicaciones escuchando (según su “fingerprint”)


nmap –P0 –sT –sV –p1-65535 192.168.1.100


Información proporcionada por servicios web.


telnet XX.XX.XX.XX 80


GET / HTTP/1.0

Códigos de error:



Provocar errores “HTTP 404 – Not Found” para obtener información adicional, por ejemplo:

Not Found

The requested URL
/page.html was not found on this server.

Apache/2.2.3 (Unix) mod_ssl/2.2.3 OpenSSL/0.9.7g DAV/2 PHP/5.1.2 Server at localhost Port 80

Vulnerabilidades de los servicios:



Comprobar que no existen vulnerabilidades en las versiones de las aplicaciones descubiertas.

Comprobación de la validez de certificados SSL:


Si se están utilizando conexiones seguras mediante HTTPS, comprobar el certificado del servidor según los siguientes puntos:


Quien firma el certificado.


Fecha de validez (comprobar que no ha caducado)


¿El nombre del certificado corresponde al sitio que estamos accediendo?

Acceso directo a los sistemas de almacenamiento de datos:


¿Es posible acceder a los sistemas de almacenamiento mediante otra aplicación diferente a la interfaz web?


De ser así, ¿es posible conectar con los mismos usuarios/passwords de la interfaz web?


De ser así, ¿los usuarios mantienen las mismas restricciones sobre la información tanto si trabajan sobre interfaz web como directamente sobre los datos?

Ficheros/Directorios no referenciados, backups o tests antiguos:


Identificar posibles ficheros antiguos, backups o tests comentados en el HTML retornado por el servidor.


Deducir esquema de nombres de las URL


Por ejemplo, si tenemos acceso a “/app/user”, quizás también exista “/app/admin”


Comentarios del código HTML retornado por el servidor.


Código HTML comentado


Código JavaScript que muestra elementos en función del tipo de usuario (e.g. si el usuario es administrador, mostrar el formulario X)


Formularios HTML con botón submit oculto (posibles antiguos tests)


Fichero “/robots.txt”


Comprobar si existen ficheros con extensiones como “.old”, “.bak”, etc…

Lógica de la aplicación:



Comprender la aplicación mediante manuales, análisis de requerimientos, especificaciones funcionales, etc…


Creación de información para realizar tests lógicos


Desarrollar pruebas:


Secuencias de uso no lógicas


Introducción de datos incorrectos (números negativos, letras en campos numéricos, etc…)

Pruebas de autentificación:



Usuarios por defecto o fácilmente deducibles.


Por ejemplo: “admin.”, “administrador”, “root”, “system”, “test”…


Posibilidad de evitar el proceso de autentificación.


Cambiando la URL


Cambiando parámetros GET o POST


Cambiando valor de cookies


Predicción de la sesión (si esta es secuencial, podríamos “robar” sesiones)


SQL Injection


“Directory Traversal”


Identificar cookies y parámetros GET o POST cuyo valor pueda ser utilizado para abrir y mostrar ficheros (e.g. http://example.com/index.php?file=content) e intentar asignar valores como “../../etc/passwd”

Gestión de sesiones:

General:



Cuestiones generales:


¿El ordenador utilizado para acceder a la web es de uso compartido?


¿Cuantas sesiones concurrentes puede tener un usuario?


¿Cuál es el timeout de desconexión por inactividad?


¿Las sesiones están asociadas a IPs?


¿Existe la funcionalidad “recordar mi usuario”?


¿El identificador de sesión se guarda en una cookie, como parámetro GET (en la URL) o como parámetro POST (en formularios)?


Analizar la aleatoriedad del identificador de sesión (e.g. ¿números son secuenciales? ¿se asigna un identificador diferente después de cada autentificación?)


¿El identificador de sesión es siempre transportado por un canal seguro?


¿Las cookies tiene asignada una fecha de expiración?


¿Qué otras cookies establece la aplicación?

Cross Site Request Forgeries (Session riding):



Una web externa puede contener un enlace oculto (por ejemplo en un tag IMG) que provoque una acción determinada en otra web (http://ejemplo.com/borrar?todo=true) donde el usuario este identificador. El atacante debe conocer la URL que provoca la acción.


En aplicaciones internas de empresas, este ataque puede ser realizado por compañeros o ex-empleados.


Comprobar si la aplicación web puede verse afectada por esta situación.


¿Todas las acciones requieren confirmación?


¿La aplicación añade información relacionada con la sesión en la URL para evitar este tipo de ataques?


¿Utiliza métodos POST en las acciones que realizan modificaciones sobre datos? (Aunque también es posible simular mediante javascript por el atacante, es una medida de contención)


¿La aplicación comprueba el Referer? (Aunque el atacante también podría manipularlo o hacer que no existe utilizando iframes)

Validación de los datos:

Cross Site Scripting (XSS):



Un ataque XSS puede ser llevado a cabo mediante: HTML, JavaScript, VBScript, ActiveX, Flash, y otros lenguajes del lado del cliente.


El objetivo más común es el robo de sesiones abiertas mediante la obtención del identificador de sesión (guardado en una cookie) y así poder acceder a página que requieran autentificación.


Para llevarlos a cabo se utilizan parámetros (GET o POST) o campos (guardados en la BBDD) que son usando para crear una página de respuesta para el cliente. Por ejemplo, una web que acepte un parámetro error “http://www.example.com/index.php?error=Conexion” e imprima dicho valor en la página de respueta.


Identificar este tipo de posible situación analizando la información que se intercambia con el servidor y el código HTML de respuesta.


Recomendaciones que ayudan a reducir riesgos:


Codificar elementos HTML. Por ejemplo, convertir “” en “lt;script>alert(‘xss’);</script>”


Vigilar lugares donde la anterior medida pueda no ser de utilidad, como por ejemplo si tenemos el siguiente código “”, podria injectarse “doesntexist.jpg’ onerror=’alert(document.cookie)" sin problemas.

Métodos HTTP:



Un servidor web puede aceptar varios comandos, los más habituales e inofensivos son GET y POST pero el resto podrían comprometer la seguridad (HEAD, GET, POST, PUT, DELETE , TRACE, OPTIONS, CONNECT):


PUT: Permite al cliente subir ficheros. Un atacante podría utilizarlo para subir código maligno (e.g. un fichero PHP).


DELETE: Permite al cliente borrar un fichero en el servidor.


CONNECT: Permite utilizar el servidor como proxy.


TRACE: Devuelve la cadena de texto que haya sido enviada. Puede ser utilizado para generar un ataque Cross Site Tracing (XST).


Identificar los métodos soportados:

$ telnet servidor.com 80

OPTIONS / HTTP/1.0

SQL Injection:



El objetivo radica en “inyectar” en la base de datos una consulta/orden SQL creada por el atacante, pudiendo así leer/modificar información o cambiar el comportamiento de la aplicación.


Por ejemplo, si la aplicación web realiza la siguiente consulta con parámetros procedentes de un formulario:

SELECT * FROM Users WHERE Username=’$username’ AND Password=’$password’

Un atacante podria rellenar el formulario indicando los siguientes valores:

$username = 1′ or ’1′ = ’1

$password = 1′ or ’1′ = ’1

De forma que se ejecutaria:

SELECT * FROM Users WHERE Username= ’1′ OR ’1′ = ’1′ AND Password= ’1′ OR ’1′ = ’1′

Y podría engañar el sistema de autentificación.


Tipos de SQL Injection:

Inband: La información se obtiene por el mismo canal que se inyecta la sentencia SQL (e.g. inyección por formulario y presentación de resultado en la siguiente respuesta HTML)


Out-of-band: La información se obtiene por un canal diferente al que se ha usado para inyectar la sentencia SQL (e.g. se inyecta mediante un email y se obtienen a través de la interfaz web)


Inferencial: La información no llega a traspasarse, pero el atacante es capaz de reconstruir la información observando las respuestas del servidor de BBDD.


Para que el ataque sea efectivo la sentencia SQL debe ser correcta, por tanto si la aplicación web muestra los mensajes de error generados por la BBDD se facilita el ataque. Se recomienda ocultar dichos errores (Blind SQL Injection).


Identificar los puntos donde la aplicación web realiza consultas a una base de datos (e.g. autentificación, visualización de elementos dinámicos, búsquedas).


Testear los puntos identificados introduciendo datos (en formularios o modificando parámetros GET/POST y cookies) que provoquen errores en la BBDD (e.g. comillas, punto y coma, comentarios –, operadores lógicos AND/OR).


Recomendación:


Filtrar los datos recibidos del cliente antes de utilizarlos en sentencias SQL.


Utilizar placeholders si nuestra base de datos lo soporta.

Otros ataques “Injection”:



Los “Stored Procedures” de las BBDD también pueden verse afectados por SQL Injection.


Si se trabaja con servidores LDAP, es posible que las consultas sean vulnerables a inyección.


Sistemas ORM (Object-Relational Managment) como Hibernate, también pueden ser vulnerables a SQL Injection.


Si la información es guardad o transportada en XML, también puede ser vulnerable a inyección de datos.


Si el servidor soporta SSI (Server Side Incluyes), este responderá a tags del tipo:







Si es posible inyectar este tipo de código tal y como se lleva a cabo en ataques de Cross Site Scripting, podriamos ejecutar comandos en el servidor.


Inyección de código (PHP, ASP) es posible si la aplicación realiza incluyes de ficheros con el nombre compuesto por datos introducidos por el usuario.


Si la aplicación web interactua con servicios SMTP/IMAP, podría verse afectado por inyección.


Si la aplicación web realiza ejecuciones de comandos que son construidos con datos proporcionados por el cliente, podría inyectarse sentencias para que sean ejecutadas en el sistema (e.g.

http://sensitive/cgi-bin/userData.pl?doc=/bin/ls|).

Riesgos referentes a ataques de denegación de servicio:



Bloqueo de usuarios por intentos de autentificación fallidos.


Posibilidad de provocar buffers overflows.


Saturación por carga excesiva de objetos en el servidor.


Provocar una gran cantidad de iteraciones sobre una parte de código que requiera un uso intensivo de CPU.


Agotar el espacio en disco duro del servidor generando una gran cantidad de información en logs o mediante otros ficheros de disco.


Identificar incorrecta liberación de recursos (e.g. conexiones a BBDD abiertas que no son usadas)


Intentar que el servidor guarde una gran cantidad de información en la sesión, agotando la memoria disponible.

Servicios Web:



Identificar si existen servicios web (SOAP/Web services) para analizar los posibles riesgos que puedan implicar.

AJAX (Asynchronous JavaScript and XML):



Técnica de desarrollo web que permite la creación de interficies web con capacidad de respuesta más rápida, dado que únicamente recarga/modifica partes de la página visualizada sin generar una nueva petición completa. Para ello se hace uso del objeto XMLHttpRequest de JavaScript y respuestas codificadas en HTML, XML, JavaScript Object Notation (JSON), etc…


Las interficies que hacen uso de AJAX pueden ser también vulnerables a los ataques anteriormente descritos (XSS, SQL Injection, etc…), dificultando su subsanación por la propia naturaleza de la tecnología).


Riesgos:


Incremento de las posibilidades de ataque dado el aumento de puntos de entrada a asegurar.


Mayor exposición de funciones internas de la aplicación.


Acceso a recursos de terceros sin mecanismos de codificación y seguridad.


Posibles fallos de protección de información de autentificación y sesiones.


Mayor riesgo de errores de seguridad, por menor claridad en la línea que separa el código del lado cliente del lado servidor.


Identificar el framework AJAX que esta siendo utilizado con el objetivo de determinar el tipo de codificación utilizada para la transmisión de información (XML, JSON, etc…).


Identificar en el código HTML que llamadas se están realizado utilizando AJAX.


Observar mediante un Proxy o sniffer, en que momento se ejecutan dichas llamadas y que tipo de información se transmite.


Utilizar depuradores de código JavaScript en el navegador cliente para determinar posibles errores potenciales.


Basar el estudio de vulnerabilidades en los puntos vistos anteriormente (XSS, SQL Injection, etc…).



Un saludo cordial.


Juan Carlos Vargas

Introduccion a XBRL

lunes, 28 de febrero de 2011

Los avances tecnológicos de las últimas décadas han configurado un nuevo escenario digital para la información financiera. Ahora bien, digital no quiere decir compatible, por lo que un documento (balance, cuenta de resultados, etc.) generado por un programa informático determinado no es directamente legible por otro programa distinto. Esto es debido a que cada fabricante utiliza sus propios formatos de almacenamiento de datos.

La necesidad de un estándar digital para el intercambio de información contable entre aplicaciones de software se acentúa si de lo que se trata es de integrar múltiples datos procedentes de estados financieros publicados en diversos formatos (pdf, xls, html, doc, etc.). Ese estándar es hoy el XBRL, estándar ampliamente aceptado por la comunidad contable internacional, desarrollado por XBRL.org, un consorcio internacional de empresas y organizaciones, patrocinado por el AICPA (American Institute of Certified Public Accountants), entre las que se encuentran las grandes de la informática, de la contabilidad y la consultoría, e instituciones como el IASB (Internacional Accounting Standards Board), el IMA (Institute of Management Accountants), el CICA (Canadian Institute of Chartered Accountants) o el ICAEW (Institute of Chartered Accountants in England and Wales) .
En Colombia, el tema de XBRL se ha venido investigando en el seno de algunas universidades como la Universidad Autónoma de Bucaramanga – UNAB – y la Universidad Javeriana. Sin embargo a nivel práctico, su uso se difunde a través de proyectos pilotos como el propuesto para la interoperabilidad de SIIF Nación con algunos sistemas externos, proyecto liderado por el Ministerio de Hacienda y Crédito Público, y proyectos de reporte corporativo como los realizados por algunos bancos extranjeros con sede en Colombia, como el BBVA y el Banco Santander, que deben reportar a sus casas matrices sus estados financieros en XBRL.





En el sector publico el XBRL comienza a ser introducido por el Grupo Desarrollo y Adopción XBRL-Colombia (GDA XBRL-Col) liderado por el ministerio de hacienda dada a la exitosa implementación en el banco central de España, en la Securities & Exchange Commission – SEC, y la creación de la taxonomía holandesa cuyo fin o meta es implementarlo para la interoperabilidad en el SIIF de la nación, el proceso de creación de la jurisdicción XBRL en Colombia ya fue iniciado.


Debido al desarrollo mundial del estándar XBRL, es imperativo introducir al sector económico-financiero de la Nación en las tendencias y políticas mundiales sobre la utilización de nuevas tecnologías de la información que soporten las iniciativas del Gobierno Nacional en materia de innovación tecnológica.
¿Por qué se realizo la creación del estandar XBRL?
A finales de 2001 salieron a la luz diversos fraudes fiscales en ENRON, la compañía eléctrica que Fortune había elegido durante 6 años consecutivos la empresa americana más innovadora. Su disolución supuso la pérdida del puesto de trabajo de más de 4.000 empleados y gravísimas pérdidas económicas a sus inversores. Arthur Andersen, la auditora de ENRON, se vio obligada a disolverse y varios de sus cargos fueron procesados.
Al año siguiente la historia se repite con Worldcom, el segundo mayor operador de telecomunicaciones americano. Posteriormente sería el turno de Tyco International y otras empresas.

La consecuencia más grave de estos escándalos fue la pérdida de confianza por parte de los inversores en las prácticas contables. Como respuesta a esta situación han surgido diversas iniciativas alrededor del mundo. Por ejemplo, la ley Sarbanes-Oxley, que regula a las empresas cotizadas en la bolsa americana, o las cada vez más habituales prácticas de transparencia y responsabilidad corporativa de los grandes grupos empresariales.
Sin embargo, muchos se preguntaban cómo era posible que, en plena era de la información, los propios accionistas de estas empresas no pudieran conocer con transparencia sus cuentas, o cómo unos auditores corruptos pudieron disfrazar la realidad contable. Este es el contexto en el que nace XBRL.

1.3. Los orígenes de XBRL

En abril de 1998, Charles Hoffman, un auditor de la firma Knight Vale and Gregory, empieza a estudiar cómo XML (un estándar cuya versión 1.0 había publicado dos meses antes el W3C), podría utilizarse para reporting financiero. En septiembre, comunica sus conclusiones a la AICPA (el mayor colegio de auditores públicos de USA), que en esos momentos tenía en marcha un programa, la Hight Tech Task Force, para analizar la aplicación de nuevas tecnologías.
La AICPA, con el apoyo de Knight Vale and Gregory, lanza un proyecto para desarrollar un prototipo para representar un conjunto de estados financieros, siguiendo las directrices de los estudios de Charles Hoffman. Los resultados de este proyecto se presentan a la High Tech Task Force en Enero de 1999 y los responsables del proyecto, Charles Hoffman y Wayne Harding, convencen a la AICPA de la relevancia de XML.
En Julio de 1999, la AICPA aporta fondos para un proyecto que se denomina XFRML (Extensible Financial Reporting Markup Language), al que se unen 12 empresas: Arthur Andersen LLP, Deloitte & Touche LLP, e-content company, Ernst & Young LLP, Edgar Online, Inc., FRx Software Corporation, Great Plains, KPMG LLP, Microsoft Corporation, PricewaterhouseCoopers LLP, and The Woodburn Group.
El primer prototipo de XFRML se finaliza en Octubre de 1999 y se utiliza para representar los estados contables de 10 compañías.

En Abril de 2000, el nombre de la organización se cambia oficialmente a XBRL (eXtensible Business Reporting Language). El cambio de nombre es acertado, ya que como posteriormente se vería, XBRL no se limita únicamente a información financiera.
En Julio de 2000, XBRL anuncia la creación de la versión 1.0 del estándar. Por entonces, el número de miembros de la organización asciende a 50. En Agosto del mismo año, Bill Gates anuncia la incorporación de XML como pieza básica de la plataforma .NET y en Octubre, Arthur Levitt, presidente de la SEC, reconoce la importancia de XBRL y recomienda su desarrollo.

Recuperacion de un XML por medio de php

domingo, 27 de febrero de 2011

Recuperacion de un XML que contiene una tabla de una base de datos en mysql por medio de php para su posterior manipulacion en variables simples usadas en php.





Un saludo.

Juan Carlos Vargas

Creacion de un xsl para mostrar mi XML de la base de datos mysql

Este video describe el uso de un Extensible Stylesheet Language Transformations (XSLT) para visualizar un documento XML creando un XSL que me creara los estilos previstos para la visualizacion correcta, partiendo del XML que almacena mi tabla de Mysql.
el uso de diferentes tecnologias para la manipulacion de datos.








Un saludo para todos.

Juan Carlos Vargas

Creacion de un XML a partir de una base de datos mysql en php

viernes, 25 de febrero de 2011

Creacion de un archivo XML de una base de datos mysql, con la medida gradual se aumenta el nivel de porcentaje de dificultad en el elenguaje php, este usa una clase persona y crea la instancia del objeto, despues invoca los metodos de impresion.





Un saludo cordial.

clases en php y mysql -POO 2.

Siguiendo con el tutorial anterior de clases en php y mysql continuamos con el desarrollo del mismo. para ello usaremos la modificacion nuestra clase para que realice una impresion sencilla de la tabla en mysql por medio de la invocacion de un metodo, tambien adicionamos un metodo cerrar conexion.
impresion clasica en php por medio de clases. POO.






clases en php y mysql -POO 1.

uso y manipulacion de clases en php y mysql

Para los programadores que tienen claros los conceptos de bases de datos y creacion de tablas en consultas sql, es bueno para tener claro el concepto de la programacion orientada a objetos, se crea una clase y se crea el objeto cuando se realiza la creacion de la instancia.





Un Saludo grande

Iniciando con PHP - variables 2

En este video explicamos el manejo formularios en html para explicar el concepto de variables en php. para ello el formulario envia a una hoja php el valor y son almacenadas en variables para su posible uso y modificacion por medio del lenguaje php.







iniciando con variables en php

Explicacion brebe y rapida de lo que es el manejo de variables en php, el trabajo realizado esta establecido para aquellos programadores que ya conocen el uso de la programacion orientada a objetos, y que conocen diferentes tecnologias. es un avance claro de lo que se puede hacer con php.





espero les guste....