2009-01-07 21 views

Respuesta

11

Puedo entender vagamente el código de ofuscación si es extremadamente avanzado en lo que hace, pero creo que ofuscar su SQL puede no valer la pena.

De todos modos, una gran parte del SQL que he visto por aquí viene ofuscado como estándar.

+0

Jaja, solo porque no obtiene la autentis de todas estas declaraciones SQL precisas, no significa que estén ofuscadas. Tu genius-fu es simplemente demasiado débil. ;) – Bombe

0

Siempre puede escribir código ordinario en C# (o VB) y almacenarlo fuera de la base de datos en una DLL.

Entonces no tiene que preocuparse por ofuscar su SQL.

+0

Sí, pero esos archivos DLL pueden descompilarse con la misma facilidad, por lo que tendría que ofuscarse, por lo que está de regreso en el cuadrado 1. –

+0

Todo el ejecutable se puede descompilar e invertir. Entonces no puedes salir de la casilla 1. ¿Por qué molestarse? –

0

Si usted está realmente preocupado por alguien entrar en la base de datos y ver la fuente para el procedimiento, entonces, como dijo S. Lott, que pueden portar el procedimiento en C#. Yo recomendaría LINQ.

Sin embargo, la base de datos en sí probablemente debería estar protegida de las personas que acceden al código para procedimientos que no deberían. Puede restringir los derechos de un usuario o grupo para que solo tengan acceso EXECUTE a un proceso si es necesario.

3

No. Al menos, no de una manera que es anti-reversible. El mensaje "WITH ENCRYPTION" de SQL Server 2000 se puede invertir para obtener el texto original. El pseudocódigo y un script T-SQL que ilustra esto están aquí: http://education.sqlfarms.com/education/ShowPost.aspx?PostID=783

Nota: No lo he intentado con SQL 2005 o superior, pero supongo que es tan vulnerable ... Como el MSDN docs estado:

CIFRADO Indica que SQL Server convertir el texto original de la sentencia CREATE PROCEDURE para un formato ofuscado .

Énfasis mío.

2

fácilmente reversible si sabes pero intimidante para que la mayoría de personas que empujan alrededor de código. hex codifica tu lógica de sproc y luego ejecuta con EXEC (@hexEncodedString).
ver esto post.

1

Publicación anterior, lo sé. Pero llegué aquí buscando '¿Por qué debería ofuscar SQL?' Acabo de instalar un producto gratuito llamado ApexSQL Refactor (sin afiliación) que ofrece un componente de ofuscación.

Ofrece varias opciones diferentes para hacer que su código sea difícil de leer. No estaba seguro de por qué querría que se me diera esa característica, ya que otros señalaron la capacidad de encriptar sus procedimientos almacenados. De todos modos, este es un ejemplo de la salida que puede devolver desde su función de ofuscación.

CrEAtE Procedure spInsertOrUpdateProduct @ProductNumber nVarChar(25), 
@ListPrice Money aS IF exIsTS(selECt * FROm Production.Product WHere 
[email protected] AnD ListPrice>1000) uPdatE Production. 
Product sET ListPrice=(ListPrice-100) where ProductNumber= 
@ProductNumber elsE INSerT intO Production.Product(ProductNumber, 
ListPrice) SelECT @ProductNumber,@ListPrice GO SElEct * fRoM 
Production.Product gO iNsERT iNTo Production.UnitMeasure(
UnitMeasureCode,Name,ModifiedDate) vAlUeS(N'FT2',N'Square Feet', 
'20080923'); Go 
Cuestiones relacionadas