2012-04-04 20 views
1

Ich definierte eine Rolle und gewähren Sie es nur mit Verbindung zur Datenbank und führen Sie eine bestimmte gespeicherte Prozedur. Benutzer haben diese Rolle kann den Körper der Prozedur sehen, wenn diese Abfrage ausgeführt wird;Verstecke den Körper der gespeicherten Prozedur?

select * from ALL_SOURCE where NAME = 'procedureName'; 

Prozedur nimmt einen VARCHAR2-Parameter und verwendet ihn mit einer Select-Abfrage. Ist das ein Sicherheitsproblem? Sollte ich es irgendwie verstecken oder dem Parameter entkommen?

Antwort

2

Im Allgemeinen wäre es nur ein Sicherheitsproblem, wenn Ihre Prozedur einer SQL-Injektion unterzogen wurde. Die Tatsache, dass Sie davon sprechen, den Parameter zu umgehen, bedeutet, dass Sie möglicherweise dynamisches SQL ausführen und anfällig für SQL-Injection-Angriffe sind. Wenn dies der Fall ist, müssen Sie die Prozedur reparieren, nicht die Quelle verstecken.

Wenn Ihre gespeicherte Prozedur einige Geschäftslogik implementiert, die Sie für proprietär halten, könnten Sie möglicherweise wrap the code, so dass es im Data Dictionary verschleiert ist. Wenn Sie das tun, stellen Sie jedoch absolut sicher, dass Sie Ihren Quellcode in der Quellcodeverwaltung haben, da es keine Möglichkeit gibt, Code zu entpacken, sobald Sie ihn umschlossen haben (streng genommen gibt es verschiedene Techniken, mit denen ein Angreifer die meisten wiederherstellen kann) eingewickelte Quelle, wenn sie wirklich wollten, aber es ist ziemlich sicher).

Verwandte Themen