Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

Ideando Página 1 de 7

Ideando
junio 6, 2008
Este blog se muda

Archivado en: programacion — mrodriguez @ 7:35 pm

La nueva dirección para este blog es:

http://www.insesys.com.mx

Allí seguiré con las anotaciones que por aquí se muestran

Dejar un comentario

abril 10, 2008


10 puntos para tomar en cuenta en el web config

Archivado en: programacion — mrodriguez @ 11:38 am

En esta dirección está el post original que ahora anexo en español tomado de aquí:

1. Custom Errors deshabilitado. En el archivo Web.config de nuestras aplicaciones ASP.NET


la etiqueta custom Errors se encuentra comentada por defecto cuando creamos una nueva
aplicación, esto deja el valor RemoteOnly por defecto. Sin embargo muchas veces cuando
estamos probando el software en un servidor remoto hay ocasiones en las que por comodidad
dejamos el valor en Off, esto permite a todos los usuarios que ingresan a las páginas de la
aplicación enterarse de los errores que suceden en la aplicación, al momento de depurar. Sin
embargo esto no es bueno al momento de desplegar, puesto que cualquiera puede también ver
pedazos de código cuando hay alguna falla. Lo más adecuado es prender la opción, lo cual
puedes aprovechar para mostrar errores más amigables al usuario, esto incluso te sirve para
optimizar para buscadores . Un ejemplo de cómo prender esta opción es el siguiente:
<customErrors mode="On">
<error statusCode="404" redirect="default.aspx" />
< /customErrors>
2. Dejar habilitado el seguimiento de la página. El seguimiento de página (tracing)
normalmente se encuentra apagado, sin embargo también por cuestiones de depuración puede
encenderse, la forma más sencilla es hacerlo en el archivo que estemos trabaando utilizando la
etiqueta Trace en la declaración de página del formulario en el que estamos trabajando, sin
embargo una buena práctica es hacerlo de modo sólo local (por si necesitamos que el
seguimiento esté de todos modos encendido) desde el archivo Web.config y luego apagarlo al
desplegar, hacerlo de esta manera encenderá el seguimiento en todos los formularios del
proyecto y evitará que se nos olvide apagarlo, lo haces con la etiqueta trace de la siguiente
manera:
<trace enabled="true" traceMode="SortByTime" localOnly="true" />
3. Depuración habilitada. Tener esta opción habilitada, afecta al rendimiento de la aplicación,
muestra errores más detallados y sólo debe encenderse mientras estamos desarrollando
precisamente para el proceso de depuración, la forma correcta de desplegar es dejando en el
archivo Web.config la opción de depuración apagada, otra buena práctica en el caso de las
aplicaciones ASP.NET creadas con Visual Basic es dejar las opciones explicit y Follow

http://mrodriguez.wordpress.com/ 17/11/2011
Ideando Página 2 de 7

encendidas, de este modo hacemos código mejor construído (léase 100 veces: no garantiza
que perfectamente construído, pero ayuda). La forma de configurar esto es de la siguiente
manera:
<compilation debug="true" strict="true" explicit="true"/>
4. Cookies suplantables. Los hackers pueden realizar ataques de XSS (Cross Site Scripting)
cuando las cookies son accesibles del lado del cliente, intentan este tipo de ataques cuando se
encuentran por ejemplo con saludos del tipo Hola ChicoDotNet en las páginas en la que se
inicia sesión agregando su propio código del lado del cliente. Esto puedes dificultarlo
fácilmente -valga la redundancia- cuando enciendes las cookies HttpOnly, esto se hace de la
siguiente forma:
<httpCookies httpOnlyCookies="true" />
5. Sesión sin cookies. Para hacer disponible una aplicación a los clientes que no aceptan cookies
se tiene la opción de colocar la sesión en la URL, muchos las utilizan por defecto para no
complicarse asignando a la etiqueta sessionState el atributo cookieless con el valor UseUri, sin
embargo esto abre la posibilidad de suplantar a un usuario determinado visitando la dirección
que contiene la sesión, esto puedes evitarlo almacenando la sesión en una cookie que expire
pronto, pero queda el problema de los clientes que no aceptan cookies, para ellos necesitas
enviar la sesión en la URL, ¿Cómo resolver eso?, enciende la autodetección, eso hará que los
clientes que las acepten las usen y los que no las reciban en la URL, se hace con el siguiente
código en Web.config:
<sessionState cookieless="AutoDetect" />
6. No emitir cookies seguras. Las cookies seguras se emiten utilizando SSL, esto hace que la
transmisión se realice en forma encriptada, para configurar SSL en IIS puedes ver el artículo
en MSDN que te indica como hacerlo en IIS 6.0, en el caso de IIS 7.0 es mucho más sencillo
como ya había mencionado anteriormente. Para la configuración de la transmisión de las
cookies por medio de SSL utiliza el siguiente código:
<authentication mode="Forms">
<forms requireSSL="true" />
< /authentication>
7. Sesiones alargables. Para alargar el tiempo de expiración de una sesión se utiliza el atributo
slidingExpiration de la etiqueta forms, esto da mayor tiempo a los hackers para suplantar a un
usuario determinado, la recomendación es dejarlo como se indica a continuación:
<forms slidingExpiration="true" />.
8. Uso de cookies de autenticación por defecto. El nombre por defecto de una cookie de
autenticación es .ASPXAUTH, una buena práctica es nombrar estas de manera distinta, por
ejemplo utilizando un GUID, de esta manera evitamos que alguien que se firme en una
aplicación del servidor y pueda modificar la cookie para firmarse en otra utilizando la primera
cookie obtenida. Este valor se pondría en el lugar que indico a continuación:
<authentication mode="Forms">
<forms name="{80aae8ec-cee2-46bc-ba57-eb89cd3db488}" requireSSL="true" />
< /authentication>
9. Paso de variables por URL. El uso de Request.Querystring(“variable”) para operaciones de
negocios debe ser evitado, sobre todo si se trata de información sensible, se debe preferir el uso
de variables de sesión o de ViewState, de otro modo cualqueir persona con algo de
conocimientos de programación podría hacer ataques de XSS o de SQL injection.
10. Credenciales o cadenas de conexión en Web.config. Esto es lo más común de la lista, debe
evitarse a toda costa el guardar usuarios y contraseñas en etiquetas credentials y cadenas de
conexión o configuraciones de aplicación en Web.config sin antes cifrarlas adecuadamente. O.
K., IIS evita la descarga de estos archivos de forma remota, pero ¿Qué me dicen de los del
hosting? Hay que tener mucho cuidado con esto.

Dejar un comentario

agosto 8, 2007
Follow

http://mrodriguez.wordpress.com/ 17/11/2011
Ideando Página 3 de 7

Código Samurai

Archivado en: programacion — mrodriguez @ 10:51 am

Al ver este artículo me acordé de muchas situaciones curiosas desarrollando sistemas.


Aunque me gusta mas la versión en inglés, presento la versión en español para los que así lo prefieran.

Inglés: http://wilshipley.com/blog/2005/02/free-programming-tips-are-worth-every.html

Español: http://zumodewiki.wordpress.com/2007/08/03/el-codigo-samurai-como-programar-mejor/

En resumen, puedo decir que hacen mucho énfasis en lo que la experiencia nos hace entender, la
importancia de:
“Pensar y repensar” antes de tirar código.
Entender exactamente que estamos haciendo.
Hacer versiones del mismo proyecto, antes de hacer el proyecto final
Hacer código mantenible.
No dejar cosas para después. (Mi padre decía que no hay mañana y hasta ahora el mañana aún no
llega, comienzo a pensar que tiene razón)
Programar pensando que las cosas alrededor de nuestro sistema puede fallar (red, bd, el usuario,
etc…)

Hay muchas otras cositas escondidas que leyendo la versión en inglés seguro captarán.

Dejar un comentario

agosto 4, 2007
Como ejecutar un comando msdos desde SQL

Archivado en: programacion, sql, T-SQL — mrodriguez @ 5:52 pm

Existe un store procedure con el que se puede ejecutar una instrucción msdos desde sql. Se hace de
esta forma:

exec master.dbo.xp_cmdshell ‘dir c:\ /b’

Esto nos entregará en forma de tabla el listado de la unidad c:\


De esta forma podríamos accesar archivos de un directorio y procesarlos de alguna forma en un store
procedure:

set @query =’master.dbo.xp_cmdshell “dir c:\Directorio\ /b”‘


insert #x exec (@query)

Mas información útil en: http://www.insesys.com.mx

Dejar un comentario

Como evitar el uso de cursores en Store procedures

Archivado en: programacion, sql, T-SQL — mrodriguez @ 5:36 pm

Para evitar el uso de cursores se pueden crear tablas temporales con un campo identity. Despues se
puede usar esta tabla temporal para recorrerla en un ciclo usando el identity para identificar el registro
que se requiere. Un ejemplo de esto sería: Follow

http://mrodriguez.wordpress.com/ 17/11/2011
Ideando Página 4 de 7

– Primero llenamos la tabla temporal (#x) nuestra consulta principal


select identity(int,1,1) as ID, Campos into #x from Tabla

– Preparamos las variables que nos ayudarán con el barrido.


declare @maximo int
declare @cont int
declare @Campos char(10)
set @maximo = (select max(ID) from #x)
set @cont =0

– Seguimos con el ciclo que generará el barrido.


While @cont <= @maximo
begin
set @cont=@cont+1
set @Campos = (select Campos from #x where [id] = @cont)
— Aquí se ponen las operaciones que sean necesarias.
end
– Listo!

Dejar un comentario

mayo 2, 2007
Desarrollo de programas de .NET sin Visual Studio.

Archivado en: .net, aplicaciones, programacion — mrodriguez @ 8:20 pm

Un documento interesante:

http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art58.asp

Dejar un comentario

abril 27, 2007


Manejo de objetos con Javascript

Archivado en: JavaScript, programacion — mrodriguez @ 5:19 pm

Me encontré un documento muy interesante acerca del manejo de objetos con javascript, visto por un
desarrollador: http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/Default.aspx?loc=es

Mas información útil en: http://www.insesys.com.mx

Comentarios (4)

febrero 21, 2007


Framework javascript para aplicaciones RIA

Archivado en: JavaScript, programacion — mrodriguez @ 4:44 pm


Follow

http://mrodriguez.wordpress.com/ 17/11/2011
Ideando Página 5 de 7

En la revista .code me encontré con esta recomendación:

http://openrico.org/rico/home.page

Es un framework para javascript bastante útil, está bastante interesante y es altamente probable que
en un futuro proyecto utilice el drag & drop que este framework maneja

Es open-source y está en javascript.

Actualización: Me encontré está página con algo semejante

http://script.aculo.us/

Dejar un comentario

febrero 20, 2007


Función para validar que un string sea una dirección de correo

Archivado en: JavaScript, programacion — mrodriguez @ 6:51 pm

Hace un rato me llegó a mi correo una función con la que se puede validar que una cadena de
caracteres cumpla con el formato de cuenta de correo. Como se que en algún momento la voy a
ocupar la dejo aquí como referencia:

var emailfilter=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i
function checkmail(e){
var returnval=emailfilter.test(e.value)
if (returnval==false){
alert(“Please enter a valid email address.”)
e.select()
}
return returnval
}

Mas información útil en: http://www.insesys.com.mx

Comentarios (1)

febrero 18, 2007


¿Como montar un div encima de un select box?

Archivado en: JavaScript, programacion — mrodriguez @ 12:03 pm

Hace un rato leyendo mis correos me encontré con una pregunta interesante. ¿Como montar un div
encima de un select box? Me recordó la ocasión en la que tuve que hacer esto y lo solucioné
escondiendo el select box, pero volví a darle una revisada a internet y ahora al parecer ya hay
solución (será que siempre la hubo), me encontré un enlace donde presentan una historia semejante a
la mia, pero con una solución alternativa que realmente desconocía, me gustó lo bien que lo explican,
dejo el enlace para futuras referencias:

http://dotnetjunkies.com/WebLog/jking/archive/2003/07/21/488.aspx
Follow

http://mrodriguez.wordpress.com/ 17/11/2011
Ideando Página 6 de 7

En la siguiente página, viene ya trabajando el concepto que se explica en el enlace anterior.

http://esdi.excelsystems.com/wsexmp/divdrp.pgm?wsnum=00110

Aquí está la opinión de Microsoft al respecto:

http://support.microsoft.com/default.aspx?scid=KB;en-us;q177378

La clave está en los iframes (tengo que leer mas de esto) y los windowed controls (quizá mas adelante
escriba lo que sé de estos).

Mas información útil en: http://www.insesys.com.mx

Dejar un comentario
Entradas más antiguas »

• Buscar

• Lo más reciente
◦ Este blog se muda
◦ 10 puntos para tomar en cuenta en el web config
◦ Código Samurai
◦ Como ejecutar un comando msdos desde SQL
◦ Como evitar el uso de cursores en Store procedures

• Posts Más Vistos


◦ Como identificar el navegador (browser) en el que se presenta la página, usando
javascript
◦ Como ejecutar un comando msdos desde SQL
◦ Función para validar que un string sea una dirección de correo
◦ Función para determinar el nombre del día de la semana o el nombre del mes del año
◦ Como agregar código js a una página desde asp.net

noviembre 2011
L M X J V S D
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
« jun

• Páginas
◦ About me

Follow

http://mrodriguez.wordpress.com/ 17/11/2011
Ideando Página 7 de 7

• Últimos comentarios.
◦ Daniel Rivera en Identificando si el navegador acepta cookies
◦ Ismael Tarqui en Como identificar el navegador (browser) en el que se presenta la
página, usando javascript
◦ Vicente de Caracas Venezuela en Como identificar el navegador (browser) en el que se
presenta la página, usando javascript
◦ kuli en Archivos JSE, codificar y decodificar archivos con javascript
◦ kuli en Archivos JSE, codificar y decodificar archivos con javascript

Tema WordPress Classic. Blog de WordPress.com.

Follow

http://mrodriguez.wordpress.com/ 17/11/2011

You might also like