Wir haben eine Abfrage erstellt, der Sensor meldet aber eine SQL Injection. Was kann ich tun?


Lösung: 

Bitte prüfe die Abfrage, ob sie Unterfunktionen enthält oder auf Systemtabellen zugreift. Vom Sensor werden Abfragen auf bestimmte Tabellen unterbunden. Hierzu gibt es eine einfache Lösung, indem eine View erzeugt wird. 


Erstellen einer View:

Eine neue View erstellst du dabei wie folgt in MySQL: 

CREATE VIEW NameDerView AS
SELECT Spalte
FROM Tabelle
WHERE Bedingung;


Nun kannst du im Sensor die Abfrage so ausführen wie zuvor - verwende dabei als Spaltenabruf den Namen der View, hier "NameDerView". 

Unter Umständen kann so die komplette SQL-Abfrage in der View erstellt werden und der Sensor greift nur noch auf die View zu. 


Hinweis 1: Die View wird ein Mal erstellt und wird mit jedem Abruf der Query (in den Sensoreinstellungen) aktualisiert. Es ist also nur nötig, diesen Vorgang ein Mal auszuführen. 

Hinweis 2: Der WHERE-Teil ist hierbei optional und dient dazu, eine Vorabauswahl zu treffen. Wird hier bereits eine Vorauswahl getroffen, so kann der WHERE-Teil im Sensor ausgelassen werden. 


Aktualisieren einer View

Um die Abfrage einer View zu verändern nutze folgende Syntax:


CREATE OR REPLACE VIEW NameDerView AS
SELECT AndereSpalte
FROM AndereTabelle
WHERE AndereBedingung;


Hinweis: Dieser Vorgang ist nur notwendig, wenn etwas an der Abfrage verändert werden soll. Eine manuelle Aktualisierung, damit die View die neusten Daten erhält, ist hingegen nicht notwendig.


Löschen einer View:

Eine View kann, sollte sie nicht mehr benötigt werden, wie folgt gelöscht werden: 


DROP VIEW NameDerView;


Hinweis: Bitte beachten, dass die View dann nicht mehr verfügbar ist und somit auch nicht mehr für Abfragen durch den Sensor verwendet werden kann.