Wie SQL Sprocs zu verschleiern?

7

Gibt es eine Möglichkeit, MS SQL Stored Procedures zu verstecken / zu schützen / zu verschleiern?

    
user32183 07.01.2009, 16:03
quelle

10 Antworten

11

Ich kann vage verstehen, Code zu verschleiern, wenn er extrem weit fortgeschritten ist, aber ich denke, das Verschleiern von SQL mag den Aufwand nicht wert sein.

Wie auch immer, eine Menge SQL, die ich hier gesehen habe, ist als Standard verschleiert.

    
Galwegian 07.01.2009 16:06
quelle
9

Wenn Sie es verstecken müssen, wie steht es mit der Klausel "WITH ENCRYPTION"?

Ссылка

    
Chris Farmer 07.01.2009 16:09
quelle
5

Siehe die Option ENCRYPTION für die Anweisung CREATE PROCEDURE.

Ссылка

    
Jeremy 07.01.2009 16:10
quelle
3

Nein. Zumindest nicht in einer Weise, die nicht umkehrbar ist. SQL Server 2000 "WITH ENCRYPTION" kann umgekehrt werden, um den ursprünglichen Klartext zu erhalten. Der Pseudocode und ein T-SQL-Skript, das dies veranschaulicht, sind hier: Ссылка

Hinweis: Ich habe es nicht mit SQL 2005 oder höher versucht, aber meine Vermutung ist, dass es genauso verwundbar ist. Wie die MSDN-Dokumentation sagt:

  

VERSCHLÜSSELUNG       Gibt an, dass SQL Server den ursprünglichen Text der CREATE PROCEDURE-Anweisung in ein verschleiertes -Format konvertiert.

Betonung meiner.

    
Matt Rogish 07.01.2009 16:20
quelle
2

leicht umkehrbar, wenn Sie wissen, aber einschüchternd zu den meisten Menschen herumstochern Code. hex kodieren Sie sproc Logik und dann mit EXEC (@hexEncodedString) ausführen Siehe hierzu posten .

    
jason saldo 07.01.2009 16:46
quelle
1

Sie können die ENCRYPTION-Klausel beim Erstellen der gespeicherten Prozedur verwenden.

Dies würde jedoch darauf hinauslaufen, die Quell-SQL nicht auf dem Kundencomputer zu belassen.

Siehe hier für weitere Informationen:

Ссылка

    
Kev 07.01.2009 16:12
quelle
1

Eine Option wäre, nur die sensiblen Teile der gespeicherten Prozedur in eine CLR-gespeicherte Prozedur einzufügen und diese Assembly mit einem professionellen Verschleierungsprodukt zu verschleiern.

Ссылка

    
Jon Galloway 07.01.2009 16:27
quelle
1

Alte Post, ich weiß. Aber ich kam von der Suche nach "Warum sollte ich SQL verschleiern?" Ich habe gerade ein kostenloses Produkt namens ApexSQL Refactor (keine Zugehörigkeit) installiert, das eine Verschleierungskomponente bietet.

Es bietet verschiedene Möglichkeiten, Ihren Code schwer lesbar zu machen. Ich war mir nicht sicher, warum ich eine solche Funktion möchte, da andere die Fähigkeit zur Verschlüsselung Ihrer gespeicherten Prozeduren notierten. Wie auch immer, dies ist ein Beispiel für die Ausgabe, die es von seiner Verschleierung zurückgeben kann.

%Vor%     
InbetweenWeekends 18.03.2016 14:24
quelle
0

Sie können gewöhnlichen Code immer in C # (oder VB) schreiben und ihn außerhalb der Datenbank in einer DLL speichern.

Dann müssen Sie sich nicht darum kümmern, Ihr SQL zu verschleiern.

    
S.Lott 07.01.2009 16:08
quelle
0

Wenn Sie wirklich besorgt sind, dass jemand in die DB gelangt und die Quelle für die Prozedur sieht, dann können Sie, wie S. Lott sagt, die Prozedur in C # portieren. Ich würde LINQ empfehlen.

Die Datenbank selbst sollte jedoch wahrscheinlich vor Personen geschützt werden, die auf den Code für Prozeduren zugreifen, die dies nicht sein sollten. Sie können die Rechte eines Benutzers oder einer Gruppe beschränken, um bei Bedarf EXECUTE-Zugriff auf einen Prozess zu haben.

    
regex 07.01.2009 16:11
quelle