Categorías
chuletario php

Evitar SQL Injection en php

Estaba ojeando la lista de categorías del blog y me he dado cuenta de que solo tengo 3 entradas referentes a php. Es curioso porque php suele ocupar el 33,3% de cada uno de mis dias (exceptuando sábados y domingos).

Así que me he decidido a publicar algunos tips de vez en cuando 🙂

Como habrán adivinado por la foto, hoy les voy a enseñar la función que suelo usar (cuando trabajo con mysql) para limpiar las ristras de posibles SQL Injection:

# Limpia una ristra para evitar sql injection
function limpia_ristra($ristra){
return mysql_escape_string(strip_tags($ristra));
}

Aunque lo mejor sería utilizar querys precompilados (prepare), bind variables y cosas así… otro día hablo de ello refiriendome a oracle :p

Categorías
chuletario Programacion

Obtener valores de un campo CLOB en Oracle

Los campos tipo CLOB en Oracle son equivalentes a los campos tipo TEXT en postgres o los tipo MEMO en mysql, puedes almacenar muchísima información de tipo texto en ellos.

oracle_joke

Una columna CLOB puede contener hasta 4GB de información… imagínate! la biblia en braille por lo menos.

El tema es que obtener el valor de un campo CLOB en un SELECT no es tan sencillo como en postgres o mysql, CLOB es un objeto y hay que usar la librería DBMS_LOB para manejarlo.

Las dos funciones útiles para leer un campo CLOB son las siguientes:

DBMS_LOB.substr(CLOB, longitud, posicion_inicial);

DBMS_LOB.getlength(CLOB);

Combinándolas, podemos obtener el contenido de una columna CLOB para nuestro SELECT.

Supongamos una tabla tablaprueba con un campo observaciones de tipo CLOB:

SELECT DBMS_LOB.substr(observaciones,DBMS_LOB.getlength(observaciones),1) FROM tablaprueba;

Así de fácil 🙂

Si el campo de texto que queremos crear tendrá menos de 4000 caracteres… mejor usar un VARCHAR2.