viernes, 11 de febrero de 2011

Encriptar Sección Web.Config

Aunque he visto quien opta por encriptar todo el web.config , a mí en realidad la única sección que me parece fundamental encriptar es la de connectionStrings, pero sin importar con cual sección deseemos trabajar, la forma de hacerlo es muy sencilla y la presento a continuación.

Asumiendo que ya se tiene un sitio Web cuyo nombre de la aplicación en el IIS es MI_SITIO_WEB seguir los siguientes pasos:

1.- Abrir una venta de símbolo del sistema y dirigirnos a la ruta:
%WinDir%\Microsoft.NET\Framework\vX.X.XXXX\
Según sea la versión del framework que utiliza la aplicación.
2.- Escribir el siguiente comando
aspnet_regiis.exe -pe "connectionStrings" -app "/MI_SITIO_WEB"
Donde connectionStrings es la sección que queremos.
Si el comando es ejecutado correctamente deberá desplegar lo siguiente
Encrypting configuration section...
Succeeded!
Una vez hecho esto, la sección indicada habrá cambiando de algo como esto:

<connectionStrings>
  <add name="CONN1" connectionString="Data Source=SERVER;Initial Catalog=DB;User ID=USR;Password=PSW" />
</connectionStrings>


En algo como esto:

< connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider" > < EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#" >
< EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" / > < KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#" >
< EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#" >
< EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" / >
< KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#" >
< KeyName >Rsa Key< /KeyName >
< /KeyInfo >
< CipherData >


Ahora tu sitio web tienen la sección encriptada pero accesible de manera transparente desde tu aplicación.
Información obtenida de http://carlosjuano.blogspot.com/2009/10/encriptar-el-webconfig.html

miércoles, 9 de febrero de 2011

Borrar registros duplicados en SQL

Después de muchos inventos como el uso de tablas temporales, cursores y otras tantas alternativas aparatosos (que si funcionan pues, pero que weba) , hoy encontré navegando en la red, como eliminar registros duplicados de manera rápida y sencilla.

Es importante mencionar que el siguiente procedimiento necesita una columna de identidad, así que si tu tabla no lo tiene, pues deberás agregarla aunque sea de manera temporal.

A continuación agrego el código:

DELETE Tabla
WHERE ColumnaIdentidad NOT IN
(
   SELECT MIN(ColumnaIdentidad)
     FROM Tabla
   GROUP BY CampoRepetido1, CampoRepetido2
)

El script lo saque de la siguiente dirección:

http://www.eggheadcafe.com/software/aspnet/34260753/eliminar-registros-duplicados-en-la-misma-tabla.aspx